Creating a curve between two points each with normalized vectors

落爺英雄遲暮 提交于 2019-12-11 11:43:55

问题


So I need a write method to create a curve between two points, with each point having a normalized vector pointing in an arbitrary direction. I have been trying to devise such a method but haven't been able to wrap my head around the math.

Here, since a picture is worth a thousand words this is what I need:

In the picture, the vectors are perpendicular to the red lines. I believe the vectors need to be weighted the same with a weight equivalent to the distance between the points. It needs to be so that when two points are on top of each other pointing in opposite directions it still all looks like one smooth curve (top curve in the picture). Also, I need to integrate the curves to find their lengths. I don't know why I haven't been able to think of how to calculate all of this but I haven't.

Also I'm using csharp the language doesn't really matter.


回答1:


Cubic Bezier will indeed achieve the requested effect. You need four control points per curve segment. Two define the endpoints and two others the directions of the tangents at the endpoints. There are two degrees of freedom left, telling how far the control points can be along the tangents.

The arc length cannot be computed analytically and you will need numerical methods. This other question gives you useful information.



来源:https://stackoverflow.com/questions/34973466/creating-a-curve-between-two-points-each-with-normalized-vectors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!