Xấp xỉ hợp lý
Như đã nêu trong các câu trả lời khác, không có cách chính xác để làm điều này. Tuy nhiên, có thể ước tính một cách hiệu quả một giải pháp.
Công thức của tôi sẽ chỉ xử lý góc phần tư phía trên bên phải . Thay đổi dấu hiệu khác nhau sẽ cần phải được áp dụng để xử lý các góc phần tư khác.
Đặt d là khoảng cách vòng cung mong muốn của bạn giữa các điểm liên tiếp. Giả sử điểm được vẽ cuối cùng là tại (x, y) .
|
b +-------._ (x,y)
| `@-._
| `-.
| `.
| \
-+--------------------+--->
O| a
Sau đó, điểm tiếp theo sẽ được vẽ ở các tọa độ sau:
x' = x + d / sqrt(1 + b²x² / (a²(a²-x²)))
y' = b sqrt(1 - x'²/a²)
Bằng chứng
Đặt điểm tiếp theo là (x + x, y + y) . Cả hai điểm đều thỏa mãn phương trình elip:
x²/a² + y²/b² = 1
(x+Δx)²/a² + (y+Δy)²/b² = 1
Loại bỏ y trong các phương trình cho:
Δy = b (sqrt(1 - (x+Δx)²/a²) - sqrt(1 - x²/a²))
Chúng tôi giả sử Δx là đủ nhỏ, vì vậy chúng tôi thay thế f (x + x) -f (x) bằng f '(x) x bằng cách sử dụng xấp xỉ tuyến tính cho f' :
Δy = -bxΔx / (a² sqrt(1 - x²/a²))
Nếu d đủ nhỏ, thì Δx và Δy đủ nhỏ và độ dài cung gần với khoảng cách eidianidian giữa các điểm. Do đó, xấp xỉ sau là hợp lệ:
Δx² + Δy² ~ d²
Chúng tôi thay thế Δy ở trên và giải quyết cho Δx :
Δx ~ d / sqrt(1 + b²x² / (a²(a²-x²)))
Nếu d không đủ nhỏ thì sao?
Nếu d là quá lớn đối với các xấp xỉ trên để có giá trị, chỉ cần thay thế d với d / N , ví dụ N = 3 , và chỉ vẽ một điểm trong tổng số N .
Lưu ý cuối cùng
Phương pháp này có vấn đề ở extrema ( x = 0 hoặc y = 0 ), có thể được xử lý bằng cách sử dụng các xấp xỉ bổ sung ( nghĩa là bỏ qua điểm cuối của góc phần tư, cho dù nó có thực sự được vẽ hay không).
Xử lý toàn bộ hình elip có thể sẽ mạnh mẽ hơn bằng cách làm lại toàn bộ vật bằng cách sử dụng tọa độ cực. Tuy nhiên, đó là một số công việc và đây là một câu hỏi cũ, vì vậy tôi sẽ chỉ làm điều đó nếu có sự quan tâm từ người đăng ban đầu :-)