Tôi tự hỏi làm thế nào để có thể viết một thuật toán chính xác để tính toán biên giới của bề mặt giao nhau giữa một bề mặt tham số f : R^2 --> R^3
và lưới tam giác.Giao điểm của lưới có bề mặt tham số
Tôi đã nghĩ đến một cách tiếp cận thứ nhất:
nStepsU = 100
nStepsV = 100
tolerance=0.01 // pick some sensical value
intersectionVertices={}
for u from minU to maxU in nStepsU:
for v from minV to maxV in nStepsV:
for v in verticesInMesh:
if euclidean distance(f(u,v), v) < tolerance:
add vertex v in a set
connect the vertices in intersectionVertices with a line strip
draw the vertices in intersectionVertices
thuật toán này, rất đơn giản nhưng chậm (n^3) và không giữ trong tài khoản đó địa hình của lưới được dựa trên hình tam giác để các điểm đầu ra là các điểm của lưới và không phải là điểm tính toán khai thác giao điểm của bề mặt với các hình tam giác và phụ thuộc nhiều vào sự khoan dung mà ta phải đặt ra.
Có ai đó có ý tưởng hay hơn hoặc có thể đưa tôi đến một thư viện phù hợp cho mục đích này không?
Bạn có bất kỳ thông tin bổ sung nào về bề mặt không? Bạn có thể dự án hiệu quả không? Bạn có thể tìm thấy hiệu quả ở phía nào của nó một điểm không? – maxim1000
Bề mặt là một helicoid 'x (r, theta) = r * cos (theta)', 'y (r, theta) = theta',' z (r, theta) = r * sin (theta) 'như vậy là không thể phân biệt được bên trong và bên ngoài – linello
Ồ, đúng vậy. Vì vậy, câu trả lời của tôi là không chính xác tại chỗ trên. Nhưng bạn vẫn có thể xác định theta và r từ (x, y, z) và tính toán khoảng cách đã ký từ đó. Những gì tôi không rõ ràng về mặc dù là, làm thế nào chính xác bạn mong đợi này được? Điều gì xảy ra nếu một tam giác giao nhau với bề mặt nhiều lần theo hướng y? –