如何获得线段外垂线上的点?

为什么要这么干?

上一篇文章讲到的三个点构造曲线,这三个点是不能在一条直线上的。所以控制点是可以通过两个点来算出来的,另外这种计算也有其他的用法。

三角函数方法

如何获得线段上的点?

c = a+(b-a)*p;

其实就是a到b过程中的百分比



而其实这个p可以取之在0~1以外的任意数,这也可以增加你对算法,运动能的扩展知识。(这里不讲这些)


如何获得直线外的点,又恰好连接c点,并与ab线相交为垂线

对这个c点做垂线上的点如何获得:
取在直线上取非c点的任意点,这个点到c点点距离为垂线点长度L,并将此点以c点为原点旋转90度,获得的点d和c点组成的直线,就是ab线的垂线

d.x = c.x + Math.cos(PI/2)*L;
d.y = c.y + Math.sin(PI/2)*L;

涉及到空间旋转,就需要分别去考虑x和y了,而之前的操作可以把x,y算法简化成一维逻辑去处理,因为之前对应x,y的算法是相同的。


垂线上的任意点

想获得cd线上的点很简单,同第一步获得线段上的点是一样的

e = c+(d-c)*p;

如何获得精确的位置点而不是比例

之前的算法都是获得相对两点的比例,而如果想控制精确的位置,则需要做一些约束

c = a+(b-a)*p;
//并且,约束一定长度
Len(c-a) = L0; 分解为
(cy-ay)²+(cx-ax)² = L0²;

笛卡尔坐标转换方法

获得pa,pb线的方程

a*x1+b = y1;
a*x2+b = y2;

此公式的计算机代码为

a = (y1-y2)/(x1-x2); //然后你发现a就是斜率
b = (x1*y2-x2*y1)/(x1-x2); //b是直线在x点为0时y的值, 这里记b=1

通过pa,pb带入公式,获得a,b的值

坐标系变化
ax+by+c=0 (a!=0) 简化公式为 ax+y+c = 0;

x-ay+ m = 0;
(x+m)/a = y;
//获得m值
m = ay - x;

将a,b,pc点的位置带入公式,就可以获得m的值 (c点通过ab线段获取),即两个线段的焦点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,097评论 0 13
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,730评论 0 5
  • 基于学生学习共同体培育语文生态课堂文化的研究 近年来,随着现代教育理念的不断深入与...
    火车头123阅读 2,132评论 0 8
  • 高级钳工应知鉴定题库(858题) ***单选题*** 1. 000003难易程度:较难知识范围:相关4 01答案:...
    开源时代阅读 6,081评论 1 9
  • 茨威格的《失宠的贵妇》讲了一个很简单的故事。一个曾经在法兰西王国上流社会红极一时,大权在握的女人,因为扰乱朝政被国...
    与朝招招手阅读 587评论 0 0