gpt4 book ai didi

math - 沿矢量变形三角形以获得特定角度

转载 作者:行者123 更新时间:2023-12-02 04:50:56 25 4
gpt4 key购买 nike

我正在尝试从共享同一原点的 3d 空间中的许多线段创建二叉树。合并两个线段时,我希望线与子节点之间有一个特定的角度。下图说明了我的问题。 C 显示父节点的位置,A 和 B 显示子节点的位置。 N是C到A和C到B的向量的平均向量。

triangle

对于给定的角度,如何确定 P 点?感谢您的帮助

最佳答案

P = C + t * ((A + B)/2 - C)    t is unknown parameter
PA = A - P PA vector
PB = B - P PB vector
Tan(Fi) = (PA x PB) / (PA * PB) (cross product in the nominator, scalar product in the denominator)
Tan(Fi) * (PA.x*PB.x + PA.y*PB.y) = (PA.x*PB.y - PA.y*PB.x)

这是t的二次方程,求解后我们将得到P点的两个(对于非退化情况)可能位置(第二个位于AB线的另一侧)

添加:

Let's ax = A.x  - A point X-coordinate and so on,
abcx = (ax+bx)/2-cx, abcy = (ay+by)/2-cy
pax = ax-cx - t*abcx, pay = ay-cy - t*abcy
pbx = bx-cx - t*abcx, pby = by-cy - t*abcy
ff = Tan(Fi) , then
ff*(pax*pbx+pay*pby)-pax*pby+pay*pbx=0
ff*((ax-cx - t*abcx)*(bx-cx - t*abcx)+(ay-cy - t*abcy)*(by-cy - t*abcy)) -
- (ax-cx - t*abcx)*(by-cy - t*abcy) + (ay-cy - t*abcy)*(bx-cx - t*abcx) =

t^2 *(ff*(abcx^2+abcy^2)) +
t * (-2*ff*(abcx^2+abcy^2) + abcx*(by-ay) + abcy*(ax-bx) ) +
(ff*((ax-cx)*(bx-cx)+(ay-cy)*(by-cy)) - (ax-cx)*(by-cy)+(bx-cx)*(ay-cy)) =0

这是二次方程 AA*t^2 + BB*t + CC = 0 带系数

AA = ff*(abcx^2+abcy^2)
BB = -2*ff*(abcx^2+abcy^2) + abcx*(by-ay) + abcy*(ax-bx)
CC = ff*((ax-cx)*(bx-cx)+(ay-cy)*(by-cy)) - (ax-cx)*(by-cy)+(bx-cx)*(ay-cy)

P.S. 我的回答是针对 2d-case 的!

对于 3d:仅使用标量积(具有向量长度)可能更简单

Cos(Fi) = (PA * PB) / (|PA| * |PB|)

关于math - 沿矢量变形三角形以获得特定角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com