幾何ライブラリ
参照
問題
構成
基本関数
sgn(x) : $ |x| \lt \epsilon なら$ 0 になる$ \mathrm{sgn}
VectorクラスVector(x, y)
点とかベクトルを表すクラス
加減算・複素数と見たときの乗除算
x座標→y座標の順で比較する比較演算
絶対値 $ \sqrt{x^2+y^2}
偏角.angle()
内積.dot()・外積.cross()
正規化.normalize()・正規化法線.normalUnitVector()
3点の比較
直線$ \overrightarrow{AB} に対する点$ C の位置iSP(A,B,C)
$ \angle ABCのざっくり角度angletype()
直線クラスLine(A, B)
2点$ A, B を通る直線・線分を表すクラス
点$ P から下ろした垂線の足.projection(P)
点$ P の鏡像.reflection(P)
直線$ L と平行か?.isParallel(L)
直線$ L と交差するか?.isCross(L, mode=3)
modeは共通して以下の設定
0 : 直線.xxx(直線)
1 : 直線.xxx(線分)
2 : 線分.xxx(直線)
3 : 線分.xxx(線分)
直線$ L との交点の座標.getCrossPoint(L, mode=0)
交差しないときは-1
点$ P とのキョリ.getDictanceP(P, mode=0)
直線$ L とのキョリ.getDistanceL(L, mode=0)
多角形クラスPolygon([P])
順序付きな点の列で多角形を作るクラス
面積.getArea()
凸多角形?.isConvex()
点$ P が内側にあるか?.isEnclose(P)
一番遠い点の組のキョリ.getDiameter()
直線で切断.getCut(L)
一番近い点の組のキョリ.getClosest()
(実装失敗。AtCoderでは出題されてない?)
円クラスCircle(P, r)
ここまで作って疲れたのでまた後日