ProgrammingCity
ソフト公開と、それに関わるいろいろ. 転送速度が遅くてごめんなさい
サイト内検索
Microsoft Silverlight を取得

ようこそ。自作ソフトを公開しています。2008/10 一部ページのアドレスが変わりました。

RSS / お気に入り追加

profile

Link

friends

ほか

何かしてくれたサイト

便利

  • Keisan
    高精度計算サイト
top > C# > その8 ~ 曲線同士の交点

曲線同士の交点

我流ではあるが、一応思いついた。


曲線同士が接しているということは、その凸包も接していることになる。
凸包の共有部分を調べ、絞り込むことで交点を得ることが出来るだろう。

(凸包が全く同じ形状の場合、絞り込めないので、半分に切るなどの
対処が必要。)

なんとなく思いついた流れ

交点を求める( 曲線A, 曲線B){

    if( 2つの凸包が接していない ) return null;

    do{
        clipA[] = 曲線A が、曲線Bの凸包内部である部分
        clipB[] = 曲線B が、曲線Aの凸包内部である部分
    }while( ClipA.length == 1 && ClipB.length == 1 && 収束していない );

    if( ClipA.length ==  0 || ClipB.length == 0 ) return null;
    if( ClipA.length == 1 && ClipB.length == 1 && 収束した ) return 座標;

    result[] = {};

    for( ClipA.length 回 ){
        for( ClipB.length 回 ){
            result +=  交点を求める( ClipA[cnt1], ClipB[cnt2] );
        }
    }
    return result;
}