简介
robust-orientation
是一个JavaScript库,用于计算平面中的点集的方向。它能够应对各种不同情况下的数值精度问题,并提供了多个API以满足不同的需求。
安装
可以通过npm来安装robust-orientation
:
--- ------- ------------------
使用说明
计算方向值
假设我们有三个点$(x_1,y_1),(x_2,y_2),(x_3,y_3)$,我们想要计算这三个点组成的三角形的方向,即是否是逆时针或顺时针方向。可以使用robust-orientation
提供的API orient2d()
来完成计算。
----- ------ - ------------------------------ ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- ----------- - ---------- --- --- --- --- ---- -- ------------ - -- - ------------------------- - ---- -- ------------ - -- - ------------------------- - ---- - --------------------- -
计算方向值和误差
如果需要同时计算方向值和误差,可以使用orient2dRobust()
API。该API返回一个数组,包含两个值:方向值和误差值。
----- - -------------- - - ------------------------------ ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- ------------- --------- - ------------------ --- --- --- --- ---- -- ------------ - -- - ------------------------- - ---- -- ------------ - -- - ------------------------- - ---- - --------------------- - -------------------- ----------
计算点是否在直线同侧
除了计算三角形方向之外,robust-orientation
还提供了其他API来完成不同的任务。例如,可以使用orient3d()
来计算四个点组成的四面体的方向。
此外,还可以使用incircle()
来计算四个点是否共圆,使用insphere()
来计算五个点是否共球等等。
这里以判断一个点是否在一条直线的同侧为例。假设我们有一条直线,由两个点$(x_1,y_1),(x_2,y_2)$确定;还有一个点$(x_3,y_3)$,我们想要判断它是否在直线的同侧。可以使用orient2d()
API来计算点$(x_1,y_1),(x_2,y_2)$和点$(x_1,y_1),(x_3,y_3)$组成的两个向量的方向,如果方向相同,则说明点$(x_3,y_3)$在直线的同侧。
----- ------ - ------------------------------ ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- -- - -- ----- ---- - ---------- --- --- --- --- ---- ----- ---- - ---------- --- --- --- --- ---- -- ------ - - -- ---- - -- -- ----- - - -- ---- - --- - ----------------------- - ---- ----------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------