説明

曲線近似装置及び方法

【目的】本発明の目的は、処理時間を増大させることなく、滑らかな折線近似が得られる曲線近似方法及び装置を提供することにある。
【構成】曲線上の一つ以上の分割点を求め複数の曲線に分割する曲線分割手段と、曲線の始点と終点とを結ぶ線分と曲線上の一点との距離を計算する距離計算手段と、二点を結ぶ線分を発生する線分発生手段を有する。
【効果】処理時間を増大させることなく、滑らかな折線近似が得られる曲線近似方法及び装置を構成出来る。

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、曲線を例えば表示装置又は印刷装置等に出力する曲線近似装置に係る。
【0002】
【従来の技術】一般に、曲線を直接ドット列として発生させようとすると複雑な処理を必要とするため、複数の連続した線分からなる折線で近似して表示する。線分を発生するには、例えば、DDA(Digital Differential Analizer)を用いる方法がある。
【0003】即ち、曲線の折線近似は、曲線上に適当なN(≧1)個の分割点を採り(一般に、分割点の座標値は実数値になるが、四捨五入等によって尤も近くの整数値に丸める)、始点と第1番目の分割点、第1番目の分割点と第2番目の分割点、……、第N−1番目の分割点と第N番目の分割点、第N番目の分割点と終点とを線分で結ぶことによってなされる。
【0004】従来、曲線上の分割点の求め方としては、次のようなものがあった。
【0005】第一の例としては、曲線の各座標がパラメータによる数式で表現されている場合に、パラメータの値を始点から終点までで等分し、各パラメータの値における点を分割点とする方法である。
【0006】第二の例としては、特開平2−10476公報に記載のように、曲線上の適当な一点を分割点として求め、曲線の始点と終点とを結ぶ直線と分割点との距離を計算し、その距離が所定値以上の場合には、分割されたそれぞれの部分曲線に対しこの処理を繰り返し、所定値未満になった場合には、上記のようにして得られた部分曲線の始点及び終点を分割点とする方法である。
【0007】
【発明が解決しようとする課題】上記従来技術の第一の例では、曲線の曲率が大きい箇所も小さな箇所も一律に処理するため、滑らかな折線近似を得ようとする場合、曲率の大きな箇所に合わせると分割点の個数を多く必要とし、又、曲率の小さな箇所には過剰の分割となり、処理時間の増大及び近似精度に問題があった。
【0008】上記第二の例では、例えば図7のような曲線P(0)P(1)に対し、分割点として点P(線分P(0)P(1)上にあるものとする)を採れば、直線P(0)P(1)と点Pとの距離は0なので所定値未満となり、故に曲線P(0)P(1)の近似として線分P(0)P(1)が得られる。然し乍ら、線分P(0)P(1)から尤も離れた曲線P(0)P(1)上の点P(2)又は点P(3)までの距離d(2)又はd(3)が大きい場合には、線分P(0)P(1)は曲線P(0)P(1)の近似とは言い難い。又、図7のような場合には、曲線P(0)P(1)を二つの曲線P(0)P及び曲線PP(1)に分けてから処理する方法が考えられる。然し乍ら、一般に、線分P(0)P(1)と交わる曲線P(0)P(1)上の点Pが存在すること及び座標を求めることは複雑な計算を必要とする。
【0009】従って、本発明の目的は、処理時間を増大させることなく、又、図7のような曲線に対しても滑らかな折線近似が得られる曲線近似方法及び装置を提供することにある。
【0010】
【問題を解決するための手段】上記課題は、曲線上の一つ以上の分割点を求め複数の曲線に分割する曲線分割手段と、曲線の始点と終点とを結ぶ直線と曲線上の一点との距離を計算する距離計算手段と、二点を結ぶ線分を発生する線分発生手段を有することによって達成される。
【0011】
【作用】上記曲線分割手段によって曲線上の一つ以上の分割点を求め、上記距離計算手段によって曲線の始点と終点を結ぶ直線と該分割点との距離の最大値を計算し、該距離の最大値が所定値以上の場合には分割されたそれぞれの部分曲線に対し上記曲線分割手段及び上記距離計算手段によって上記処理を繰り返し、所定値未満となった部分曲線の場合には上記処理の繰り返しを行なわず該部分曲線の始点と終点とを結ぶ線分を上記線分発生手段によって発生することによって曲線を折線で近似する。ここで、上記曲線分割手段は、曲線の始点と終点とを結ぶ直線と平行な接線を有する点を分割点とする。
【0012】
【実施例】以下、本発明の一実施例について述べる。
【0013】図1は、本発明の構成図の一例である。図1R>1において、101は曲線分割手段であり曲線上の一つ以上の分割点を求めるために使用し、102は距離計算手段であり曲線の始点と終点を結ぶ直線と該分割点との距離の最大値を計算するために使用し、103は線分発生手段であり始点と終点とを結ぶ線分を発生するために使用する。
【0014】図2は、本発明のフローチャートの一例である。先ず、曲線を分割するための分割点を求め(曲線分割処理、ステップ201)、次に、曲線の始点及びステップ201で求めた分割点及び曲線の終点を隣合う順番毎に線分で結ぶ(折線発生処理、ステップ202)。
【0015】図3は、図2におけるステップ201の曲線分割処理のフローチャートの一例である。先ず、曲線分割手段101によって曲線の始点P(0)と終点P(1)とを結ぶ直線P(0)P(1)に平行な接線を有する点Q(k)(k=1, 2, …, M)を総て求め、分割点とする(ステップ301)。次に、距離計算手段102によって直線P(0)P(1)とそれぞれの分割点との距離の最大値を求める(ステップ302)。次に、ステップ302で求めた距離の最大値が所定値未満であれば処理を終了し、所定値以上であれば繰返し処理(ステップ304)を実行する(判定303)。
【0016】図4は、図3におけるステップ304の繰返し処理のフローチャートの一例である。曲線分割処理に入力される曲線の始点をQ(0)、分割点をQ(k)(k=1, 2,…, M)、曲線の終点をQ(M+1)とする。先ず、ループカウンタLCにM+1を代入する(ステップ401)。次に、始点をQ(M+1-LC)、終点をQ(M−LC)とする部分曲線に対し図2におけるステップ201の曲線分割処理を行う(ステップ402、ステップ403)。次に、LCをデクリメントし(ステップ404)、0であれば繰返し処理を終了し、正数であれば再びステップ402に戻る(判定405)。
【0017】図5は、図2におけるステップ202の折線発生処理のフローチャートの一例である。図2におけるステップ201の曲線分割処理によって求めた分割点をR(k)(k=1, 2, …, N)、曲線の始点をR(0)、終点をR(N+1)とする。先ず、ループカウンタLCにN+1を代入する(ステップ501)。次に、線分発生手段103によって始点をR(N+1−LC)、終点をR(N−LC)とする線分を発生する(ステップ502)。次に、LCをデクリメントし(ステップ503)、0であれば折線発生処理を終了し、正数であれば再びステップ502に戻る(判定504)。
【0018】図6は、本発明の上記実施例を用いて曲線の折線近似を行った場合の一例である。
【0019】図6(a)は、曲線分割手段101によって、曲線P(0)P(1)に対して、直線P(0)P(1)に平行な接線を有する点P(2)及び点P(3)を求めるようすを示す図である。
【0020】例えば、曲線P(0)P(1)が
【0021】
【数1】P=P(t) (0≦t≦1)のようにパラメータによる数式で表現されている場合を考える。この場合には、直線P(0)P(1)に平行な接線を有する分割点の求め方は次のようにする。即ち、曲線P(0)P(1)のt(0≦t≦1)における接線の勾配ベクトルはP'(t)で与えられ('は微分を表す)、又、直線P(0)P(1)の方向ベクトルはP(1)−P(0)で与えられるので、両ベクトルの方向が一致するための値tを求めればよい。それには、tとαの連立方程式
【0022】
【数2】P'(t)=α(P(1)−P(0)) (0≦t≦1)を解く方法、又は、tについての方程式(P(1)−P(0))×P'(t)=0 (0≦t≦1)を解く方法等がある(×は外積を表す)。これらは、どちらからも同じ解が得られ、微積分学の平均値の定理により少なくとも一つの解が存在する。又、三次のBezier曲線のようにP(t)が高々三次の多項式で表される場合には、二次方程式を解けばよいことになり、二次方程式の解の公式により容易に解を求めることができる。又、P(t)が円弧の一部として与えられる場合には、逆正接テーブルのようなテーブルを用いることで容易に解を求めることができる。以上のようにして求めたt=t(1), t(2), …, t(N)によって分割点P(t(1)), P(t(2)), …, P(t(N))を求めることができる。
【0023】次に、距離計算手段102によって、直線P(0)P(1)と点P(2)及び点P(3)との距離d(2)及びd(3)を求める。距離の求め方は、一般に、直線の方程式を
【0024】
【数3】aX+bY+c=0とするとき、点P(X, Y)からこの直線までの距離dは
【0025】
【数4】d=|aX+bY+c|/√(a×a+b×b)で与えられる(×は積演算を表す)。又、線分と点との距離の求め方は、特開平2-10476公報に記載のように、線分の中点と点との距離を求めるようにしてもよい。この例では、max(d(2), d(3))が所定値以上になるものとする。
【0026】図6(b)は、max(d(2), d(3))が所定値以上になるため、曲線分割手段101によって、部分曲線P(0)P(2)に対し分割点P(4)を、部分曲線P(2)P(3)に対し分割点P(5)及びP(6)を、部分曲線P(3)P(1)に対し分割点P(7)を求め、距離計算手段102によって、直線P(0)P(2)と点P(4)との距離d(4)を、直線P(2)P(3)と点P(5)及び点P(6)との距離d(5)及びd(6)を、直線P(3)P(1)と点P(7)との距離d(7)を求めるようすを示す図である。この例では、d(4)のみ所定値以上になるものとする。
【0027】図6(c)は、d(4)が所定値以上になるため、曲線分割手段101によって、部分曲線P(0)P(4)に対し分割点P(8)を、部分曲線P(4)P(2)に対し分割点P(9)を求め、距離計算手段102によって、直線P(0)P(4)と点P(8)との距離d(8)を、直線P(4)P(2)と点P(9)との距離d(9)を求めるようすを示す図である。この例では、max(d(8), d(9))が所定値未満となるものとする。
【0028】図6(d)は、総ての距離が所定値未満となったため、線分発生手段103によって、線分(0)P(4)及び線分P(4)P(2)及び線分P(2)P(3)及び線分P(3)P(1)を結び、折線を発生するようすを示した図である。
【0029】
【発明の効果】本発明によれば、曲線分割手段によって曲線上の一つ以上の分割点を求め、距離計算手段によって曲線の始点と終点を結ぶ線分と該分割点との距離の最大値を計算し、該距離の最大値が所定値以上の場合には分割されたそれぞれの部分曲線に対し曲線分割手段及び距離計算手段によって上記処理を繰り返し、所定値未満となった部分曲線の場合には上記処理の繰り返しを行なわず該部分曲線の始点と終点とを結ぶ線分を線分発生手段によって発生することによって曲線を折線で近似する。ここで、曲線分割手段は、曲線の始点と終点とを結ぶ直線と平行な接線を有する点を分割点とする。
【0030】従って、処理時間を増大させることなく、又、図7のような曲線に対しても滑らかな折線近似が得られる曲線近似方法及び装置を構成出来る。
【図面の簡単な説明】
【図1】本発明の構成図である。
【図2】本発明のフローチャートである。
【図3】曲線分割処理のフローチャートである。
【図4】繰返し処理のフローチャートである。
【図5】折線発生処理のフローチャートである。
【図6】曲線の折線近似を行った場合の一例を示す図である。
【図7】曲線の折線近似の従来例を示す図である。
【符号の説明】
101…曲線分割手段、
102…距離計算手段、
103…線分発生手段。

【特許請求の範囲】
【請求項1】曲線上の一つ以上の分割点を求め複数の曲線に分割する曲線分割手段と、曲線の始点と終点とを結ぶ直線と曲線上の一点との距離を計算する距離計算手段と、二点を結ぶ線分を発生する線分発生手段を有することを特徴とする曲線近似装置。
【請求項2】請求項1記載の曲線近似装置において、上記曲線分割手段によって曲線上の一つ以上の分割点を求め、上記距離計算手段によって曲線の始点と終点を結ぶ直線と該分割点との距離の最大値を計算し、該距離の最大値が所定値以上の場合には分割されたそれぞれの部分曲線に対し上記曲線分割手段及び上記距離計算手段によって上記処理を繰り返し、所定値未満となった部分曲線の場合には上記処理の繰り返しを行なわず該部分曲線の始点と終点とを結ぶ線分を上記線分発生手段によって発生することによって曲線を折線で近似することを特徴とする曲線近似方法。
【請求項3】請求項1記載の曲線分割手段は、曲線の始点と終点とを結ぶ直線と平行な接線を有する点を分割点とすることを特徴とする曲線近似装置。

【図1】
image rotate


【図2】
image rotate


【図6】
image rotate


【図7】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【公開番号】特開平5−205041
【公開日】平成5年(1993)8月13日
【国際特許分類】
【出願番号】特願平4−14735
【出願日】平成4年(1992)1月30日
【出願人】(000005108)株式会社日立製作所 (27,607)