Bạn sẽ cần phải nghĩ về các hình dạng ở dạng vector. Vì vậy, đối với tam giác của bạn, hình dạng có thể được biểu diễn dưới dạng chuỗi các vectơ: (-0,5, -0,5), (1, 0), (-0,5, 0,5). bởi vì bạn biết hình dạng và hướng, về cơ bản, bạn đang khớp chuyển động ngón tay của người dùng với hình dạng mong đợi.
Cách bạn xác định tỷ lệ của hình ảnh là bằng cách ghi lại điểm chạm ban đầu của người dùng và sau đó, mỗi lần cập nhật, điểm mà ngón tay của họ, cho đến khi họ đạt đến cuối dòng đầu tiên (sẽ nói thêm về điều này sau). Độ dài của vectơ từ nơi chạm bắt đầu đến góc đầu tiên là tỷ lệ của hình ảnh mà bạn đang mong đợi chúng vẽ. bạn nhân đại diện vectơ của bạn về hình dạng dự kiến theo tỷ lệ này để có được hình dạng chính xác mà họ nên vẽ.
Để xác định góc đầu tiên, có lẽ bạn nên theo dõi góc của vectơ từ điểm nhấn ban đầu đến vị trí nhấn hiện tại. Khi góc này khác với góc dự kiến theo một ngưỡng nào đó, bạn giả sử người dùng thay đổi hướng vẽ.
Vì điểm chúng tôi phát hiện sự thay đổi hướng (chữ thập màu xanh lam thấp hơn trên hình ảnh ở trên) không phải là góc thực tế, thay vào đó là nơi góc ngưỡng được giao nhau, chúng tôi vẫn cần xác định điểm thực tế để xác định tỷ lệ chính xác. Cách thức này được thực hiện bằng cách nhìn vào hai vectơ đầu tiên của hình dạng của chúng ta - trong trường hợp của chúng ta (-0,5, -0,5) và (1, 0). Chúng tôi điều chỉnh chúng sao cho cái đầu tiên đi qua vị trí bắt đầu chạm và để cái thứ hai đi qua điểm mà góc ngưỡng được giao nhau. Chúng ta còn lại với (-0,5 + x1, -0,5 + y1) và (1 + x2, 0 + y2), trong đó x1, y1, x2 và y2 là các độ lệch cần thiết để đảm bảo các đường đi qua các điểm đã chỉ định. Sau đó, chúng tôi tìm thấy giao điểm của hai dòng này. Đây là điểm mà giá trị X của cả hai dòng sẽ giống nhau và giá trị Y của cả hai dòng sẽ giống nhau.
Để tính toán chất lượng bản vẽ, bạn sẽ cần lấy mẫu đường dẫn của người dùng theo các khoảng cách bằng nhau.
Ở mỗi khoảng thời gian, bạn sẽ tìm thấy điểm gần nhất trên hình dạng chính xác. Khoảng cách là lỗi.
Cuối cùng, bạn cũng sẽ cần bình thường hóa lỗi này dựa trên khoảng cách đã vẽ so với khoảng cách chính xác. Điều này là để vẽ một hình dạng dài hơn không làm tăng lỗi của bạn và vì vậy vẽ một hình ngắn hơn không làm giảm nó.
adjusted_error = measured_error * (correct_shape_length / drawn_shape_length)
Nhiều điều tôi đề cập ở đây có cách tiếp cận khác. Tôi cũng có thể đi sâu hơn rất nhiều về đại số tuyến tính cần thiết để thực hiện các phép tính hoặc các lớp và phương thức cụ thể được sử dụng trong chính Unity. Tuy nhiên tôi sẽ cần thêm thông tin về những gì bạn cần giúp đỡ thêm trước khi tôi có thể làm điều đó.