第二次图形化编程培训作业

课后作业

四角星:

写一个函数,输入参数是 向量 A, 中心 P, 和内径 s, 计算四角星各个顶点的坐标.

由题可得外接圆半径为$|\vec|$,以及$e_{PA}=\frac{\vec{PA}}{|\vec{PA}|}$

设外接圆的其余三个定点为$A_1,A_2,A_3$,可得三个点的位置分别为
$$
A_1=R(\frac{\pi}{2})e_{PA} |\vec{PA}|+P \
A_2=R(\pi)e_{PA} |\vec{PA}|+P \
A_3=R(\frac{3\pi}{2})e_{PA} |\vec{PA}|+P \
$$
同理,可得$e_{PS}=\frac{(S-P)}{|SP|}$

设内接圆其余三个点为$S_1,S_2,S_3$,则
$$
S_1=R(\frac{\pi}{2}) e_{PS} |\vec{PS}| +P \
S_2=R(\pi) e_{PS} |\vec{PS}| +P \
S_3=R(\frac{3\pi}{2}) e_{PS} |\vec{PS}| +P
$$

皮带轮:

写一个函数,输入参数是两个圆的圆心和半径,输出四个边界点 P Q R S 的坐标

image-20220502155754407

过点$B$作垂直于$AP$的直线$BD$,用为$BQ\perp PQ$ 且$DP \perp PQ$,可判定四边形$DPQB$为长方形。

则$|AD|=r_A-r_b$ ,又可知|AB|的长度,

所以$\angle ABD$为
$$
\sin{\angle ABD}=\frac{|AD|}{|AB|} \
\angle ABD=\arcsin \frac{|AD|}{|AB|}
$$
则$\vec{BD}$的方向数为$e_{BD}=R({-\angle ABD}) \frac{BA}{|AB|}$

同时也可知道$e_{AD}=R(-\frac{\pi}{2})e_{BQ}$,$e_{AS}=R(\frac{\pi}{2}-\angle {ABD})e_{AB}$

综上,可以得出上述问题中的点的位置
$$
P=r_A e_{AD} +A \
Q=r_B e_{AD} +B \
S=r_A e_{AS} +A \
R=r_B e_{AS} +B
$$