成果物
www.youtube.com
今まで、外心をよく使っていたのですが、垂心や傍心などはほとんど使ったことがなかったので実装してみました。三角関数を使って表されている場合もあるのですが、計算の負荷などを考え、使わずにする方法をなんとか見つけました。
仕組み
定義などはこちらを参考にしてください
三角形の五心の覚えておくべき性質を整理 | 高校数学の美しい物語
重心,Centroid,Center of Gravity
各頂点位置の平均を求めるだけです。
外心,Circumcenter
多くのサイトで三角関数を使って表されていますが、こちらの長めの数式を使うと、使わずに計算できます。
外接円の半径は、外心と任意の頂点との距離を求めると得られます。
How do I find the circumcenter of the triangle using python without external libraries? - Stack Overflow
内心,Inner center, Incenter
頂点の座標を辺の長さで重み付けをするようにして得られます。
Incircle and excircles of a triangle - Wikipedia
また、内心円の半径は次の式で求められます。
Incircle and excircles of a triangle - Wikipedia
垂心,Orthocenter
少し長いですが、垂心はこちらの式で求めることができます。
こちらのサイトを元に実装に適した形に書き換えました。
How To Find Orthocenter of a Triangle | 4 Easy Steps (Video)
傍心,Excenter
三線座標系というものが内心では1:1:1なのですが、傍心では-1:1:1なので、それを利用して求めているようです。詳しくはこちらをご覧ください。
geometry - Finding the Excenter of a Triangle. - Mathematics Stack Exchange
傍心は三つあるので注意です。
コード
Five Triangle Centersという名前で追加しています。
github.com