ホントにいろいろなケースがあるものだ・・・・
円と直線の交点を追加して、その直線をクリッピングしたとする。このとき、端点の考察に「円との交点」がまだ加味されていない。
この問題で面倒くさいのは、円と直線の交点が虚数根になったときに、見た目上は交点が減る、ということである。
つまり、円と直線が交わらなくなった段階で、クリッピングが必要なくなる場合もあるのだ。incident_CLの扱いをどうするかを、かなり慎重に見極めなければいけない。
(8月27日)やれやれ
この問題で面倒くさいのは、円と直線の交点が虚数根になったときに、見た目上は交点が減る、ということである。
つまり、円と直線が交わらなくなった段階で、クリッピングが必要なくなる場合もあるのだ。incident_CLの扱いをどうするかを、かなり慎重に見極めなければいけない。
(8月27日)やれやれ
とりあえずの道筋を書いておく。
まず、incident_PLが示す局所座標を複素係数にする。(これまでは実数だった。)
次に、GConst::Evaluateで、交点の実数根の個数が変化する部分で、NOicsの値を±2調節する。
そして、MyVCanvas::DrawOneLineでは実数の値をもつ座標だけを相手とし、実数の値を持つ座標が2個以上ある場合(NOics>=2)にはクリッピングを行う。
(8月28日〉
まず、incident_PLが示す局所座標を複素係数にする。(これまでは実数だった。)
次に、GConst::Evaluateで、交点の実数根の個数が変化する部分で、NOicsの値を±2調節する。
そして、MyVCanvas::DrawOneLineでは実数の値をもつ座標だけを相手とし、実数の値を持つ座標が2個以上ある場合(NOics>=2)にはクリッピングを行う。
(8月28日〉
とりあえず、incident_PLの局所座標を複素数にしてみた。が、次のような問題点があることがわかった。
円と円の交点を結ぶような直線上に別に2点を配置し、クリッピングする。円と円が交わらなければ「その2点」でクリッピングされるが、円と円が交わっているときは円と円の交点を交えた形でクリッピングが行われる。
シンデレラではこれは問題なくできた。しかし、incident_PLの局所座標を複素数にするだけではこれはできない。理由は円と円が交わらない場合だが、円と円が交わらない場合には、「直線上の点」も複素座標になってしまう。(あくまで内分点として処理しているため。)これをどのように考えるか
(8月30日)
シンデレラではこれは問題なくできた。しかし、incident_PLの局所座標を複素数にするだけではこれはできない。理由は円と円が交わらない場合だが、円と円が交わらない場合には、「直線上の点」も複素座標になってしまう。(あくまで内分点として処理しているため。)これをどのように考えるか
(8月30日)
とりあえずConst_Meet()関数のところで、incident_CLデータを渡すことにした。円と直線の交点が関与するようなクリッピングはとりあえずうまくいく。
2円の2交点を結ぶような直線をクリッピングすると、円が交わっているうちは線分が表示されるが、円が交わらないと直線そのものが表示されなくなる。これは「端点」が複素座標になってしまっているからだが、シンデレラなんかだとクリッピングされない直線だけ表示されたりする。どちらが良いかはよくわからない。
2円の2交点を結ぶような直線と、さらに別の直線との交点を考えると、円が交わっているうちは正しくクリッピングされる。円が交わらなくなると、「別の直線との交点」は正しく表示され、2円の2交点を結ぶ直線は消えてしまう。不自然だろうか?
2円の2交点を結ぶような直線をクリッピングすると、円が交わっているうちは線分が表示されるが、円が交わらないと直線そのものが表示されなくなる。これは「端点」が複素座標になってしまっているからだが、シンデレラなんかだとクリッピングされない直線だけ表示されたりする。どちらが良いかはよくわからない。
2円の2交点を結ぶような直線と、さらに別の直線との交点を考えると、円が交わっているうちは正しくクリッピングされる。円が交わらなくなると、「別の直線との交点」は正しく表示され、2円の2交点を結ぶ直線は消えてしまう。不自然だろうか?
(9月1日)