(57)【特許請求の範囲】
【請求項１】
３次元空間の対象となる点に対する自由曲面のパラメータ点を生成させるパラメータ生成装置であって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出手段と、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出手段と、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出手段と、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定手段とを備え、
前記曲面判定手段は、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、
前記パラメータ点算出手段は、前記曲面判定手段によって前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出することを特徴とするパラメータ生成装置。
【請求項２】
３次元空間の対象となる点の自由曲面に対する内外判定を行う内外判定手段を備えた内外判定装置であって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出手段と、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出手段と、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出手段と、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定手段とを備え、
前記曲面判定手段は、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、
前記パラメータ点算出手段は、前記曲面判定手段によって前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出し、
前記内外判定手段は、前記パラメータ算出手段によって算出されたパラメータ点が前記自由曲面のパラメータ区間内にあるか否かに基づいて前記内外判定を行うことを特徴とする内外判定装置。
【請求項３】
３次元空間の対象となる曲線列に対する自由曲面のパラメータ曲線列を生成するパラメータ曲線列生成装置であって、
前記自由曲面はパラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面であり、
前記自由曲面の境界関数列を算出する境界算出手段と、
前記対象となる曲線列の各曲線上のサンプル点列を求めるサンプル点列算出手段と、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出手段と、
前記パラメータ点列が前記自由曲面の前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、前記挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換手段とを備えることを特徴とするパラメータ曲線列生成装置。
【請求項４】
前記曲線列変換手段は、前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定する際に、
前記パラメータ点列内の連続する２点の内いずれか一方のパラメータ点の前記周期的成分をパラメータ区間の上限または下限のいずれか遠い方に変更した点を求め、この変更された点をラフパラメータ点として調整を行うことにより区間外のパラメータ点を求め、この区間外のパラメータ点と他方の点のパラメータ空間内における第１の距離と、変更前の区間内のパラメータ点と前記他方の点のパラメータ空間内における第２の距離とを比較して、
前記第２の距離が前記第１の距離より大きければ前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布していると判定し、
前記第２の距離が前記第１の距離以下であれば前記パラメータ点列が前記周期的方向の境界関数を挟んで分布していないと判定することを特徴とする請求項３に記載のパラメータ曲線列生成装置。
【請求項５】
３次元空間の対象となる点のトリム曲面に対する内外判定を行う内外判定装置であって、
前記トリム曲面は、パラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面上の限られた範囲の曲面であり、
前記対象となる点の前記トリム曲面に対するパラメータ点を算出し、算出したパラメータ点が前記トリム曲面のパラメータ区間外のパラメータ点であり、かつ、区間外の成分が前記周期的成分である場合は、このパラメータ点の区間外の成分を前記周期的成分のパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出するパラメータ点算出手段と、
前記トリム曲面の境界関数列を算出する境界算出手段と、
前記境界関数列上のサンプル点列を求めるサンプル点列算出手段と、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記トリム曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出手段と、
前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換手段と、
前記パラメータ点算出手段によって算出されたパラメータ点から延ばした半直線と前記曲線列変換手段によって算出されたパラメータ曲線列との交差回数が奇数であれば、前記対象となる点は前記トリム曲面内にあると判定し、前記交差回数が偶数であれば、前記対象となる点は前記トリム曲面外にあると判定する内外判定手段とを備えることを特徴とする内外判定装置。
【請求項６】
３次元空間の対象となる点に対する自由曲面のパラメータ点を生成させるパラメータ生成方法であって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
コンピュータが、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出ステップと、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出ステップと、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出ステップと、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定ステップとからなり、
前記曲面判定ステップにおいて、コンピュータが、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、
前記パラメータ点算出ステップにおいて、コンピュータが、前記曲面判定ステップにより前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出することを特徴とするパラメータ生成方法。
【請求項７】
３次元空間の対象となる点の自由曲面に対する内外判定を行う内外判定方法であって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
コンピュータが、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出ステップと、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出ステップと、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出ステップと、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定ステップと、
前記対象となる点の自由曲面に対する内外判定を行う内外判定ステップとからなり、
前記曲面判定ステップにおいて、コンピュータが、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、
前記パラメータ点算出ステップにおいて、コンピュータが、前記曲面判定ステップにより前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出し、
前記内外判定ステップにおいて、コンピュータが、前記パラメータ算出ステップにより算出されたパラメータ点が前記自由曲面のパラメータ区間内にあるか否かに基づいて前記内外判定を行うことを特徴とする内外判定方法。
【請求項８】
３次元空間の対象となる曲線列に対する自由曲面のパラメータ曲線列を生成するパラメータ曲線列生成方法であって、
前記自由曲面はパラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面であり、
コンピュータが、
前記自由曲面の境界関数列を算出する境界算出ステップと、
前記対象となる曲線列の各曲線上のサンプル点列を求めるサンプル点列算出ステップと、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出ステップと、
前記パラメータ点列が前記自由曲面の前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、前記挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換ステップとからなることを特徴とするパラメータ曲線列生成方法。
【請求項９】
前記曲線列変換ステップにおいて、コンピュータが、前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定する際に、
前記パラメータ点列内の連続する２点の内いずれか一方のパラメータ点の前記周期的成分をパラメータ区間の上限または下限のいずれか遠い方に変更した点を求め、この変更された点をラフパラメータ点として調整を行うことにより区間外のパラメータ点を求め、この区間外のパラメータ点と他方の点のパラメータ空間内における第１の距離と、変更前の区間内のパラメータ点と前記他方の点のパラメータ空間内における第２の距離とを比較して、
前記第２の距離が前記第１の距離より大きければ前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布していると判定し、
前記第２の距離が前記第１の距離以下であれば前記パラメータ点列が前記周期的方向の境界関数を挟んで分布していないと判定することを特徴とする請求項８に記載のパラメータ曲線列生成方法。
【請求項１０】
３次元空間の対象となる点のトリム曲面に対する内外判定を行う内外判定方法であって、
前記トリム曲面は、パラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面上の限られた範囲の曲面であり、
コンピュータが、
前記対象となる点の前記トリム曲面に対するパラメータ点を算出し、算出したパラメータ点が前記トリム曲面のパラメータ区間外のパラメータ点であり、かつ、区間外の成分が前記周期的成分である場合は、このパラメータ点の区間外の成分を前記周期的成分のパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出するパラメータ点算出ステップと、
前記トリム曲面の境界関数列を算出する境界算出ステップと、
前記境界関数列上のサンプル点列を求めるサンプル点列算出ステップと、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記トリム曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出ステップと、
前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換ステップと、
前記パラメータ点算出ステップにより算出されたパラメータ点から延ばした半直線と前記曲線列変換ステップにより算出されたパラメータ曲線列との交差回数が奇数であれば、前記対象となる点は前記トリム曲面内にあると判定し、前記交差回数が偶数であれば、前記対象となる点は前記トリム曲面外にあると判定する内外判定ステップとからなることを特徴とする内外判定方法。
【請求項１１】
３次元空間の対象となる点に対する自由曲面のパラメータ点を生成させるパラメータ生成プログラムであって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
コンピュータに、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出ステップと、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出ステップと、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出ステップと、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定ステップとを実行させ、
前記曲面判定ステップにおいて、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であるとコンピュータに判定させ、
前記パラメータ点算出ステップにおいて、前記曲面判定ステップにより前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点をコンピュータに算出させることを特徴とするパラメータ生成プログラム。
【請求項１２】
３次元空間の対象となる点の自由曲面に対する内外判定を行う内外判定プログラムであって、
前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、
コンピュータに、
前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出ステップと、
前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出ステップと、
前記対象となる点に対するパラメータ点を算出するパラメータ点算出ステップと、
前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定ステップと、
前記対象となる点の自由曲面に対する内外判定を行う内外判定ステップとを実行させ、
前記曲面判定ステップにおいて、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であるとコンピュータに判定させ、
前記パラメータ点算出ステップにおいて、前記曲面判定ステップにより前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点をコンピュータに算出させ、
前記内外判定ステップにおいて、前記パラメータ算出ステップにより算出されたパラメータ点が前記自由曲面のパラメータ区間内にあるか否かに基づいて前記内外判定をコンピュータに実行させることを特徴とする内外判定プログラム。
【請求項１３】
３次元空間の対象となる曲線列に対する自由曲面のパラメータ曲線列を生成するパラメータ曲線列生成プログラムであって、
前記自由曲面はパラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面であり、
コンピュータに、
前記自由曲面の境界関数列を算出する境界算出ステップと、
前記対象となる曲線列の各曲線上のサンプル点列を求めるサンプル点列算出ステップと、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出ステップと、
前記パラメータ点列が前記自由曲面の前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、前記挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換ステップとを実行させることを特徴とするパラメータ曲線列生成プログラム。
【請求項１４】
前記曲線列変換ステップにおいて、コンピュータに、前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定させる際に、
前記パラメータ点列内の連続する２点の内いずれか一方のパラメータ点の前記周期的成分をパラメータ区間の上限または下限のいずれか遠い方に変更した点を求め、この変更された点をラフパラメータ点として調整を行うことにより区間外のパラメータ点を求め、この区間外のパラメータ点と他方の点のパラメータ空間内における第１の距離と、変更前の区間内のパラメータ点と前記他方の点のパラメータ空間内における第２の距離とをコンピュータに比較させ、
前記第２の距離が前記第１の距離より大きければ前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているとコンピュータに判定させ、
前記第２の距離が前記第１の距離以下であれば前記パラメータ点列が前記周期的方向の境界関数を挟んで分布していないとコンピュータに判定させることを特徴とする請求項１３に記載のパラメータ曲線列生成プログラム。
【請求項１５】
３次元空間の対象となる点のトリム曲面に対する内外判定を行う内外判定プログラムであって、
前記トリム曲面は、パラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面上の限られた範囲の曲面であり、
コンピュータに、
前記対象となる点の前記トリム曲面に対するパラメータ点を算出し、算出したパラメータ点が前記トリム曲面のパラメータ区間外のパラメータ点であり、かつ、区間外の成分が前記周期的成分である場合は、このパラメータ点の区間外の成分を前記周期的成分のパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出するパラメータ点算出ステップと、
前記トリム曲面の境界関数列を算出する境界算出ステップと、
前記境界関数列上のサンプル点列を求めるサンプル点列算出ステップと、
前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記トリム曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出ステップと、
前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換ステップと、
前記パラメータ点算出ステップにより算出されたパラメータ点から延ばした半直線と前記曲線列変換ステップにより算出されたパラメータ曲線列との交差回数が奇数であれば、前記対象となる点は前記トリム曲面内にあると判定し、前記交差回数が偶数であれば、前記対象となる点は前記トリム曲面外にあると判定する内外判定ステップとを実行させることを特徴とする内外判定プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＡＤ（Computer  Aided  Design）によって３次元形状モデルを設計するために３次元空間の点に対する自由曲面のパラメータを求めることができるパラメータ生成装置及び方法並びにプログラムに関するものである。
【０００２】
【従来の技術】
従来、自由曲面、自由曲線は３次元形状モデルとしてＣＡＤで広く利用されている。この３次元形状モデルを設計するためには、形状同士の干渉点や干渉線を求める必要が多々あるため、干渉計算を実現するために３次元空間の点座標を自由曲線上のパラメータ点や自由曲面上のパラメータ点に変換する必要がある。
【０００３】
自由曲面のパラメータ点を求める方法としては、三次元立体形状処理方式があり、この方式では、３つの曲面の交点を各曲面上に投影した点の座標値及びパラメータ値を求めた後、各曲面上に投影した点における接平面を曲面の法線ベクトルを用いて求め、次いで、接平面の交点を求めた後、接平面の交点を曲面上に投影した点を各々の曲面について求めるようにしている（特開２０００−１９４８８０号公報）。
【０００４】
また、自由曲線のパラメータ点を求める方法としては、自由曲線上のパラメータ値生成方式があり、この方式では、自由曲線データ値と点とを入力して、この点の当該自由曲線上におけるパラメータ値を生成する３次元形状処理システムにおいて、点の近似的な自由曲線上のラフパラメータ値を生成した後、このラフパラメータ値に対する自由曲線の接線ベクトルを生成し、次いで、この生成された接線ベクトルへ前記点を投影した後、この投影された点と前記ラフパラメータ値とが十分近接しているかどうか判断し、次いで、この判定結果により十分近接していないと判断されたとき、ラフパラメータ値を微調整するようにしている（特許第３１２１０２３号）。
【０００５】
さらに、この種のパラメータ生成方法に関しては、「千代倉弘明著、ソリッドモデリングーＣＡＤ／ＣＡＭのための基礎技術、工業調査会刊（１９８５）」に記載されている。
【０００６】
一方、曲面モデルとしてよく使われる自由曲面の中には、周期的曲面（periodic  surface）と呼ばれるものがあり、前述の方法では正しいパラメータ点が求まらない。このような曲面の例を図１３に示す。ここで、図１４に示すように、周期的曲面Ｓ（ｕ，ｖ）のパラメータ空間の区間０≦ｕ、ｖ≦１内の点（ｕ0,ｖ0）と区間外の点（ｕ1,ｖ1）に対する実空間上の点は同一の点になる場合がある。
【数１】
0003977110.tif 000002
【０００７】
【発明が解決しようとする課題】
しかしながら、前述のような従来の技術では、ある周期的曲面のパラメータ空間の区間の内外にあるそれぞれの点が、パラメータ空間上では異なる点であるにも拘らず、実空間上では同じ点になるため、周期的パラメータ曲面に対し、従来の三次元立体形状処理方式や自由曲線上のパラメータ値生成方式を通用させると、次のように正しい結果が求まらないという問題があった。
１）曲面のパラメータ点を計算すると、実際にパラメータ定義域内の点であるにもかかわらず、曲面のパラメータ定義域外のパラメータ点が求まってしまう。
２）点の内外判定計算を行うと、実際に曲面内の点であるにもかかわらず、曲面外の点として判定されてしまう。
３）パラメータ曲線を計算すると、実際にパラメータ定義域内の曲線であるにもかかわらず、曲面のパラメータ定義域外のパラメータ曲線が求まってしまう。
４）パラメータ曲線を計算すると、不連続なパラメータ曲線が求まってしまう。
５）トリム曲面の点の内外判定計算を行うと、実際にトリム曲面内の点であるにもかかわらず、トリム曲面外の点として判定されてしまう。
【０００８】
そこで本発明は、周期的パラメータ曲線列を含む曲面のパラメータ定義域内のパラメータ点及び周期的パラメータ曲線列を含む曲面のパラメータ曲線を求めることができるパラメータ生成方法、パラメータ生成装置及びプログラムを提供することを目的としている。
【０００９】
また本発明は、周期的パラメータ曲線列を含む曲面の点の内外判定計算を行うことができる点の自由曲面に対する内外判定方法、内外判定装置及びプログラムを提供することを目的としている。
【００１０】
また本発明は、周期的パラメータ曲線列を含む曲面の連続したパラメータ曲線列を計算することができるパラメータ曲線列生成方法、パラメータ曲線列生成装置及びプログラムを提供することを目的としている。
【００１１】
さらに本発明は、周期的パラメータ曲線列を含むトリム曲面の点の内外判定計算を行うことができる３次元空間の点のトリム曲面に対する内外判定方法、内外判定装置及びプログラムを提供することを目的としている。
【００１２】
【課題を解決するための手段】
上記目的を達成する本発明のパラメータ生成装置は、３次元空間の対象となる点に対する自由曲面のパラメータ点を生成させるパラメータ生成装置であって、前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出手段と、前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出手段と、前記対象となる点に対するパラメータ点を算出するパラメータ点算出手段と、前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定手段とを備え、前記曲面判定手段は、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、前記パラメータ点算出手段は、前記曲面判定手段によって前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出する構成を有している。
【００１３】
この構成により、本発明のパラメータ生成装置は、三次元空間の対象となる点の周期的曲面に対するパラメータ点を求める際に、実際にパラメータ定義域内の点であるにもかかわらずパラメータ定義域外のパラメータ点を算出してしまうことなく正確なパラメータ点を算出することができる。
【００１４】
また、上記目的を達成する本発明の内外判定装置は、３次元空間の対象となる点の自由曲面に対する内外判定を行う内外判定手段を備えた内外判定装置であって、前記自由曲面はパラメータｕおよびｖにより表されるパラメトリック曲面Ｓ（ｕ，ｖ）であり、前記自由曲面の境界関数列Ｓ（ｕ，０）、Ｓ（１，ｖ）、Ｓ（ｕ，１）およびＳ（０，ｖ）を算出する境界算出手段と、前記境界関数列の各境界関数の境界横断導関数δＳ（ｕ，０）／δｖ、δＳ（１，ｖ）／δｕ、δＳ（ｕ，１）／δｖおよびδＳ（０，ｖ）／δｕをそれぞれ求める導関数算出手段と、前記対象となる点に対するパラメータ点を算出するパラメータ点算出手段と、前記境界関数列と前記境界横断導関数とに基づいて前記自由曲面が周期的曲面であるか否かを判定する曲面判定手段とを備え、前記曲面判定手段は、前記境界関数列の中で互いに対向する位置の境界関数の組のうち、Ｓ（ｕ，０）＝Ｓ（ｕ，１）またはＳ（０，ｖ）＝Ｓ（１，ｖ）の条件を満たす組があり、かつ、この組の境界関数の境界横断導関数がδＳ（ｕ，０）／δｖ＝δＳ（ｕ，１）／δｖまたはδＳ（０，ｖ）／δｕ＝δＳ（１，ｖ）／δｕの条件を満たす場合には、前記自由曲面が、前記条件を満たした境界関数の組が互いに対向する方向に変化するパラメータ成分を周期的成分とした周期的曲面であると判定し、前記パラメータ点算出手段は、前記曲面判定手段によって前記自由曲面が周期的曲面であると判定された場合に、前記パラメータ点が前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分であれば、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出し、前記内外判定手段は、前記パラメータ算出手段によって算出されたパラメータ点が前記自由曲面のパラメータ区間内にあるか否かに基づいて前記内外判定を行う構成を有している。
【００１５】
この構成により、本発明の内外判定装置は、三次元空間の対象となる点が周期的曲面のパラメータ定義域内にあるか否かを判定する際に、実際にパラメータ定義域内の点であるにもかかわらずパラメータ定義域外であると判定してしまうことなく内外判定を行うことができる。
【００１６】
また、上記目的を達成する本発明のパラメータ曲線列生成装置は、３次元空間の対象となる曲線列に対する自由曲面のパラメータ曲線列を生成するパラメータ曲線列生成装置であって、前記自由曲面はパラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面であり、前記自由曲面の境界関数列を算出する境界算出手段と、前記対象となる曲線列の各曲線上のサンプル点列を求めるサンプル点列算出手段と、前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記自由曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出手段と、前記パラメータ点列が前記自由曲面の前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、前記挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換手段とを備えた構成を有している。
【００１７】
なお、前記曲線列変換手段は、前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定する際に、前記パラメータ点列内の連続する２点の内いずれか一方のパラメータ点の前記周期的成分をパラメータ区間の上限または下限のいずれか遠い方に変更した点を求め、この変更された点をラフパラメータ点として調整を行うことにより区間外のパラメータ点を求め、この区間外のパラメータ点と他方の点のパラメータ空間内における第１の距離と、変更前の区間内のパラメータ点と前記他方の点のパラメータ空間内における第２の距離とを比較して、前記第２の距離が前記第１の距離より大きければ前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布していると判定し、前記第２の距離が前記第１の距離以下であれば前記パラメータ点列が前記周期的方向の境界関数を挟んで分布していないと判定するようにしてもよい。
【００１８】
この構成により、本発明のパラメータ曲線列生成装置は、３次元空間の対象となる曲線列に対する周期的曲面のパラメータ曲線列を生成する際に、実際にパラメータ定義域内の曲線であるにもかかわらずパラメータ定義域外の曲線を算出してしまうことなく連続したパラメータ曲線を算出することができる。
【００１９】
また、上記目的を達成する本発明の内外判定装置は、３次元空間の対象となる点のトリム曲面に対する内外判定を行う内外判定装置であって、前記トリム曲面は、パラメータｕおよびｖにより表され、パラメータｕまたはｖを周期的成分とする周期的なパラメトリック曲面上の限られた範囲の曲面であり、前記対象となる点の前記トリム曲面に対するパラメータ点を算出し、算出したパラメータ点が前記トリム曲面のパラメータ区間外のパラメータ点であり、かつ、区間外の成分が前記周期的成分である場合は、このパラメータ点の区間外の成分を前記周期的成分のパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として調整を行うことにより正確なパラメータ点を算出するパラメータ点算出手段と、前記トリム曲面の境界関数列を算出する境界算出手段と、前記境界関数列上のサンプル点列を求めるサンプル点列算出手段と、前記サンプル点列の各点に対するパラメータ点を算出し、算出した各パラメータ点のうち、前記トリム曲面のパラメータ区間外であり、かつ、区間外の成分が前記周期的成分のものがあれば、このパラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更し、変更後のパラメータ点をラフパラメータ点として正確なパラメータ点に調整することにより、前記サンプル点列に対するパラメータ点列を算出するパラメータ点列算出手段と、前記パラメータ点列が前記周期的な方向の境界関数を挟んで分布しているか否かを判定し、挟んで分布していると判定した場合には、挟んでいる箇所ごとに前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割し、分割したパラメータ点列をそれぞれ別のパラメータ曲線列に変換する曲線列変換手段と、前記パラメータ点算出手段によって算出されたパラメータ点から延ばした半直線と前記曲線列変換手段によって算出されたパラメータ曲線列との交差回数が奇数であれば、前記対象となる点は前記トリム曲面内にあると判定し、前記交差回数が偶数であれば、前記対象となる点は前記トリム曲面外にあると判定する内外判定手段とを備えた構成を有している。
【００２０】
この構成により、本発明の内外判定装置は、三次元空間の対象となる点が周期的なトリム曲面内にあるか否かを判定する際に、実際にトリム曲面内の点であるにもかかわらずトリム曲面外であると判定してしまうことなく内外判定を行うことができる。
【００２１】
また本発明は、装置以外にも、他の態様として、方法またはプログラムとして実現される。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
図１は、本発明の実施の一形態に係るデータ処理装置１００（本発明のパラメータ生成装置、内外判定装置及びパラメータ曲線列生成装置に含まれる）のハードウェア構成を示す。
【００２９】
データ処理装置１００において、入力部５は、キーボードやマウス等のポインティングデバイスからなり、曲線データや点データ、曲面データ等の各種情報を含む必要データや指示を入力するものである。出力部６は、例えば、ＣＲＴディスプレイや液晶表示ディスプレイから構成されており、ＣＡＤ等の３次元画像を表示するものである。
【００３０】
ＣＰＵ２２は装置全体を制御し、本実施形態のパラメータ生成機能、内外判定機能及びパラメータ曲線列生成機能を含む各種機能を実現するものである。メモリ３は、ＣＰＵ２２の制御によって各種機能を実現するためのプログラム（図５乃至図１２に示す処理を含む）や必要データを記憶するためのＲＯＭ、ＲＡＭ等からなり、特にパラメータ計算プログラムとオペレーションシステムが格納されており、このパラメータ計算プログラムはＣＤ−ＲＯＭドライブ８によりコンパクトディスク・リードオンリー・メモリ（以下、ＣＤ‐ＲＯＭともいう）等の記憶媒体からインストールされたものである。
【００３１】
前記ＣＤ‐ＲＯＭからインストールされたパラメータ計算プログラム、換言すれば、前記ＣＤ‐ＲＯＭに記憶されたプログラムとしては、パラメータ生成プログラム、点の自由曲面に対する内外判定を行う内外判定プログラム、パラメータ曲線列検出プログラム及び３次元空間の点のトリム曲面に対する内外判定を行う内外判定プログラムがある。
【００３２】
ハードディスク装置４は、３次元形状モデルを作成するための処理対象データや作成されたパラメータ等の必要データや処理結果を蓄積するものである。フレキシブル・ディスク・ドライブ（以下、ＦＤＤともいう）７は、フレキシブルディスク（以下、ＦＤともいう）に対するデータの書き込み（更新）及び読み出しを行うものである。
【００３３】
通信部１０は、通信インタフェースを介して通信回線との接続を制御し、前記通信回線で接続された他の通信装置との間で信号及びデータを授受するものである。
【００３４】
これらの各部３〜８、１０、２２はバス９によって接続されている。なお、記憶媒体は前記ＣＤ‐ＲＯＭに限らず、読み取り専用のディジタル・ビデオ・ディスク（以下、ＤＶＤ‐ＲＯＭともいう）、リムーバルディスク等であっても良く。また、メモリ３には前記ＣＤ‐ＲＯＭからではなく、通信部１０により所定のサーバとネットワークで接続できるようにしておき、サーバから上記プログラムをインストールしてもよい。
【００３５】
次に、前述の各プログラムを説明する。
まず、パラメータ生成プログラムは、ＣＰＵ２２に、対象となる自由曲面の境界曲線列を求めるステップＳ１０１（図５に示す）と、それぞれの境界曲線の境界横断導関数を求めるステップＳ１０２（図５に示す）と、対象となる点に対するパラメータ点を求めるステップＳ１０３（図５に示す）と、前記境界曲線列と前記境界横断導関数とを用いて対象となる自由曲面が周期的曲面であるか否かを判定するステップＳ１０４（図５に示す）と、前記対象となる自由曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化するステップＳ１０５（図５に示す）とを実行させるものである。
【００３６】
また、パラメータ生成プログラムは、ステップＳ１０４において、ＣＰＵ２２に、前記境界曲線列の中で対向する位置の境界曲線の組を比較させ、この対向する位置の境界曲線の組が同一である場合に、さらに前記組の境界横断導関数を比較させるものである。
【００３７】
また、パラメータ生成プログラムは、ステップＳ１０５において、ＣＰＵ２２に、対象となるパラメータ点が自由曲面のパラメータ区間外で、かつ区間外の成分が周期的成分である場合に、前記パラメータ点の区間外の成分をパラメータ区間の上限または下限のいずれか近い方に変更させ、この変更されたパラメータ点をラフパラメータとして正規化されたパラメータ点を求めさせるものである。
【００３８】
また、点の自由曲面に対する内外判定を行う内外判定プログラムは、ＣＰＵ２２に、対象となる自由曲面の境界曲線列を求め、それぞれの境界曲線の境界横断導関数を求めて、対象となる点に対するパラメータ点を求め、前記境界曲線列と前記境界横断導関数とを用いて対象となる自由曲面が周期的曲面であるか否かを判定し、前記対象となる自由曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化するステップＳ１０１〜Ｓ１０５（図５に示す）と、この正規化されたパラメータ点が自由曲面のパラメータ区間内にあるか否かを調べるステップＳ４０２〜Ｓ４０４（図８に示す）とを実行させるものである。
【００３９】
また、パラメータ曲線列生成プログラムは、ＣＰＵ２２に、対象となる自由曲面の境界関数列を求めるステップＳ５０１（図９に示す）と、この境界関数の境界横断導関数を求めるステップＳ５０２（図９に示す）と、この境界横断導関数を用いて対象となる曲線列の各曲線をパラメータ曲線に変換するステップＳ５０３（図９に示す）とを実行させるものである。
【００４０】
また、パラメータ曲線列生成プログラムは、ステップＳ５０３において、ＣＰＵ２２に、対象となる自由曲面の境界曲線列を求めさせ、この境界曲線列の各曲線上のサンプル点列を求めさせ、それぞれの境界曲線の境界横断導関数を求めさせて、対象となる点に対するパラメータ点を求めさせ、前記境界曲線列と前記境界横断導関数とを用いて対象となる自由曲面が周期的曲面であるか否かを判定させ、前記対象となる自由曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化させることにより、前記サンプル点列からパラメータ点列を求めさせ、このパラメータ点列が周期的曲面の周期的方向の境界関数を挟んで分布しているか否かを調べさせ、前記境界関数を挟んで分布している場合に、前記パラメータ点列に連結点パラメータを追加して前記パラメータ点列を分割させ、分割されたパラメータ点列からそれぞれ別のパラメータ曲線を生成させて、前記曲線をパラメータ曲線へ変換させるものである。
【００４１】
また、パラメータ曲線列生成プログラムは、前記パラメータ点列が周期的曲面の周期的方向の境界関数列を通過するか否かを判定する場合に、ＣＰＵ２２に、前記パラメータ点列内の連続する２点の内いずれか一方のパラメータ点の周期的成分をパラメータ区間の上限または下限のいずれか遠い方に変更した点を求めさせ、この変更された点をラフパラメータとして区間外のパラメータ点を求めさせ、この区間外のパラメータ点と他方の点のパラメータ空間内における距離と、変更前の区間内の前記連続する２点の内いずれか一方のパラメータ点と他方の点のパラメータ空間内における距離とを比較させるものである。
【００４２】
さらに、点のトリム曲面に対する内外判定を行う内外判定プログラムは、ＣＰＵ２２に、対象となるトリム曲面の境界曲線列を求め、それぞれの境界曲線の境界横断導関数を求めて、対象となる点に対するパラメータ点を求め、前記境界曲線列と前記境界横断導関数とを用いて対象となるトリム曲面が周期的曲面であるか否かを判定し、前記対象となるトリム曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化するステップＳ１０１〜Ｓ１０５（図５に示す）と、前記境界横断導関数を用いて対象となる曲線列の各曲線をパラメータ曲線に変換してパラメータ曲線列を求めるステップＳ５０１〜Ｓ５０３（図９に示す）と、前記正規化されたパラメータ点から延した半直線とパラメータ曲線列との交差回数を調べるステップＳ８０３（図１２に示す）とを実行させるものである。
【００４３】
ＣＰＵ２２は、これらプログラムに基づいて各種パラメータを生成するようになっており、３次元空間の点に対する自由曲面のパラメータ点を生成する場合に、対象となる自由曲面の境界曲線列を算出する曲線列算出部（曲線列算出手段に含まれる）と、それぞれの境界曲線の境界横断導関数を求める導関数算出部（導関数算出手段に含まれる）と、対象となる点に対するパラメータ点を算出するパラメータ点算出部（パラメータ点算出手段に含まれる）と、前記境界曲線列と前記境界横断導関数とを用いて対象となる自由曲面が周期的曲面であるか否かを判定する曲面判定部（曲面判定手段に含まれる）と、前記対象となる自由曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化する正規化部（正規化手段に含まれる）とを構成している。
【００４４】
また、ＣＰＵ２２は、３次元空間の点の自由曲面に対する内外判定を実行する場合に、対象となる自由曲面の境界曲線列を算出し、それぞれの境界曲線の境界横断導関数を算出して、対象となる点に対するパラメータ点を算出し、前記境界曲線列と前記境界横断導関数とを用いて対象となる自由曲面が周期的曲面であるか否かを判定し、前記対象となる自由曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化するパラメータ生成部（パラメータ生成手段に含まれる）と、正規化されたパラメータ点が自由曲面のパラメータ区間内にあるか否かを判定する内外判定部（内外判定手段に含まれる）とを構成している。
【００４５】
また、ＣＰＵ２２は、３次元空間の曲線列に対する自由曲面のパラメータ曲線列を生成する場合に、対象となる自由曲面の境界関数列を算出する関数算出部（関数算出手段に含まれる）と、この境界関数の境界横断導関数を算出する導関数算出部（導関数算出手段に含まれる）と、この境界横断導関数を用いて対象となる曲線列の各曲線をパラメータ曲線に変換する曲線変換部（曲線変換手段に含まれる）とを構成している。
【００４６】
また、ＣＰＵ２２は、３次元空間の点のトリム曲面に対する内外判定を行う場合に、対象となるトリム曲面の境界曲線列を求め、それぞれの境界曲線の境界横断導関数を算出して、対象となる点に対するパラメータ点を算出し、前記境界曲線列と前記境界横断導関数とを用いて対象となるトリム曲面が周期的曲面であるか否かを判定し、前記対象となるトリム曲面が周期的曲面である場合に、前記境界横断導関数を用いて前記パラメータ点を正規化するパラメータ生成部（パラメータ生成手段に含まれる）と、前記境界横断導関数を用いて対象となる曲線列の各曲線をパラメータ曲線に変換してパラメータ曲線列を算出する曲線列算出部（曲線列算出手段に含まれる）と、前記正規化されたパラメータ点から延した半直線とパラメータ曲線列との交差回数により前記内外判定を行う内外判定部（内外判定手段に含まれる）とを構成している。
【００４７】
次に、本実施形態のパラメータ生成方法、点の自由曲面に対する内外判定方法、パラメータ曲線列生成方法及び点のトリム曲面に対する内外判定方法を説明する。
【００４８】
ここで、本実施形態を適用する前提を示す。本実施形態で扱う自由曲線はパラメトリック曲線であり、パラメトリック曲線上の点はパラメータｔにより次のように表す。
【数２】
0003977110.tif 000003
代表的なパラメトリック曲線としては、Bezier曲線があるが、本手法は曲線の種類は問わず、パラメトリック曲線であればどのようなものにでも適用できる。ｎ次のBezier曲線は、（ｎ＋１）個の制御点Ｐiにより構成され、曲線上の点は次のように表す。
【数３】
0003977110.tif 000004
ここで、Ｂ（ｔ）はBernstein基底関数と呼ばれる関数で、以下のように表す。
【数４】
0003977110.tif 000005
また、図２にBezier曲線の例を示す。
【００４９】
本実施形態で扱う自由曲面はパラメトリック曲面であり、パラメトリック曲面上の点はパラメータｕ、ｖにより次のように表す。
【数５】
0003977110.tif 000006
代表的なパラメトリック曲面としては、Bezier曲面があるが、本実施形態の方法は曲面の種類は問わず、パラメトリック曲面であればどのようなものにも適用できる。（ｎ×ｍ）次のBezier曲面は、（ｎ＋1）×（ｍ＋1）個の制御点Ｐijにより構成され、曲面上の点は次のように表す。
【数６】
0003977110.tif 000007
なお、Ｂ（ｕ）、Ｂ（ｖ）は自由曲線の項で説明たBernstein基底関数と呼ばれる関数である。図３にBezier曲面の例を示す。
本実施形態で扱うトリム曲面は、前述した自由曲面と自由曲線列の組で、自由曲面上の限られた範囲の曲面を表したものである。図４にトリム曲面の例を示す。
【００５０】
次に、図５により本実施形態の周期的曲面におけるパラメータ生成方法を説明する。
まず、自由曲面の境界関数列を求める（ステップＳ１０１）。この境界関数列は、自由曲面の境界をなす関数で、連続する複数の関数からなる。自由曲面の境界関数列は自由曲面の制御点から容易に求めることができる。例として、次式（７）に示すBezier曲面の場合に、境界関数列は次式（８）のようになる。
【数７】
0003977110.tif 000008
【数８】
0003977110.tif 000009
【００５１】
次いで、境界曲線ごとに境界横断導関数∂Ｓ（ｕ，０）／∂ｖ，∂Ｓ（１，ｖ）／∂ｕ，∂Ｓ（ｕ，１）／∂ｖ，∂Ｓ（０，ｖ）／∂ｕを求める（ステップＳ１０２）。この境界横断導関数は曲面ごとに異なり、Bezier曲面の場合は次のようになる。
【数９】
0003977110.tif 000010
【００５２】
次いで、周知の方法（特開２０００‐１９４８８０号公報に記載）を用いて対象となる点に対するパラメータ点を計算する（ステップＳ１０３）。
【００５３】
次いで、境界横断導関数を用いて対象となる自由曲面が周期的曲面か否かを判定する（ステップＳ１０４）。ここで、前記自由曲面が周期的曲面である場合に、境界横断導関数を用いてパラメータ点の正規化を行う（ステップＳ１０５）。
このようにして、周期的曲面におけるパラメータ点を得る。
【００５４】
次に、図６を参照しながら前述のステップＳ１０４に示す周期的曲面の判定方法について説明する。
まず、前述のステップＳ１０１で求めた境界曲線列の中から対向する位置の境界曲線の組を比較する（ステップＳ２０１）。ここで、対向する位置の境界曲線の組を比較するとは、Ｓ（ｕ，０）とＳ（ｕ，１）、Ｓ（１，ｖ）とＳ（０，ｖ）という２組の式を比較することである。具体的にはBezier曲線の場合に、制御点が、
【数１０】
0003977110.tif 000011
の条件のいずれかを満たすか否かを調べることである。
【００５５】
次いで、前述した２組の式のいずれかの組が等しい場合に、境界横断導関数を比較する（ステップＳ２０２）。
ここで、
【数１１】
0003977110.tif 000012
のように置き換えると、ＡとＣが等しい場合には、ｖ方向が周期的成分の周期的曲面であると判定され、ＢとＤが等しい場合には、ｕ方向が周期的成分の周期的曲面であると判定される（ステップＳ２０３）。具体的にはBezier曲線の場合に、制御点が、
【数１２】
0003977110.tif 000013
の条件のいずれかを満たすか否かを調べればよい。なお、前述の条件のいずれも満たさない場合には、周期的曲面ではないと判定する（ステップＳ２０４）。
このようにして、周期的曲面か否かを判定する。
【００５６】
次に、図７を参照しながら前述のステップＳ１０５に示すパラメータ点の正規化方法について説明する。
まず、パラメータ点が自由曲面のパラメータ区間外にあり、かつ周期的成分であるか否かを調べる（ステップＳ３０１）。具体的には、自由曲面のパラメータ区間は０≦ｕ、ｖ≦１なので、パラメータ点（ｕ，ｖ）が条件「０≦ｕ、ｖ≦１」を満たす場合に、パラメータ点はパラメータ区間内にあると判断する。また、パラメータ点（ｕ，ｖ）が条件「０≦ｕ、ｖ≦１」を満たさない場合には、パラメータ点はパラメータ区間外にあると判断する。さらに、パラメータ点がパラメータ区間外にある場合に、パラメータ成分が前述のステップＳ１０３で求めた周期的曲面の周期的成分か否かを調べる。
【００５７】
次いで、パラメータ点が自由曲面のパラメータ区間外にあり、かつ周期的成分である場合に、区間外の周期的成分をパラメータ区間の上限（＝１）あるいは下限（＝０）の近い方に変更する（ステップＳ３０２）。
すなわち、
ｕ＜０の場合、（ｕ，ｖ）→（０，ｖ）
ｕ＞１の場合、（ｕ，ｖ）→（１，ｖ）
ｖ＜０の場合、（ｕ，ｖ）→（ｕ，０）
ｖ＞１の場合、（ｕ，ｖ）→（ｕ，１）
のように変更する。
【００５８】
次いで、ステップＳ３０２で得られたパラメータについて、ラフパラメータ値として、前述の周知の方法（特開２０００‐１９４８８０号公報に記載）のラフパラメータ値調整手段を用いて正確なパラメータ値を求める（ステップＳ３０２）。
このようにして、正規化されたパラメータ点を取得する。
【００５９】
次に、図８を参照しながら周期的曲面における点の内外判定方法を説明する。
まず、判定対象となるパラメータ点を図５に示す方法により求める（ステップＳ４０１）。
【００６０】
次いで、前記パラメータ点が自由曲面のパラメータ区間内にあるか否かを調べ（ステップＳ４０２）、パラメータ区間内にある場合に内側と判定し（ステップＳ４０３）、パラメータ区間外ならば外側と判定する（ステップＳ４０４）。具体的には、自由曲面のパラメータ（ｕ，ｖ）のｕ、ｖはそれぞれ区間［０，１］内にあるため、０≦ｕ≦１かつ０≦ｖ≦１の場合に、パラメータ点は内側にあり、この場合以外にはパラメータ点は外側にあると判定する。
このようにして、周期的曲面に対する点の内外判定を行う。
【００６１】
次に、図９を参照しながら周期的曲面におけるパラメータ曲線列を求める方法を説明する。
まず、図５に示すステップＳ１０１と同じ方法を用いて、自由曲面の境界関数列を求める（ステップＳ５０１）。
【００６２】
次いで、ステップＳ１０２と同じ方法を用いて、境界曲線ごとに境界横断導関数を求める（ステップＳ５０２）。
【００６３】
次いで、対象となる曲線列の各曲線をパラメータ曲線に変換してパラメータ曲線列を取得する（ステップＳ５０３）。
このようにして、周期的曲面におけるパラメータ曲線列を得る。
【００６４】
次に、図１０を参照しながら図９に示すステップＳ５０３についてさらに説明する。
まず、曲線上のサンプル点列を求める（ステップＳ６０１）。具体的には、サンプル点は次式（１３）のように最初は等間隔パラメータにより曲線Ｃ（ｔ）上の点を求め、サンプル点列とする。
【数１３】
0003977110.tif 000014
ここで、サンプル点の数ｎには適当な値が与えられているものとする。
【００６５】
次いで、図５に示す方法により次式（１４）のようにサンプル点列から曲面のパラメータ点列を求める（ステップＳ６０２）。
【数１４】
0003977110.tif 000015
【００６６】
次いで、パラメータ点列がステップＳ５０２で求めた周期曲面の周期的方向の境界関数を挟んで分布するか否かを調べる（ステップＳ６０３）。
【００６７】
次いで、前記パラメータ点列が前記周期曲面の周期的方向の境界関数を挟んで分布している場合に（ステップＳ６０３のＹＥＳ）、挟んでいる箇所ごとに前記パラメータ点列を分割する（ステップＳ６０４）。
例えば、周期的方向がｕ方向で（ｕi,ｖi）、（ｕi+1，ｖi+1）の２点間で境界関数を挟んでいる場合に、｛・・・，（ｕi，ｖi），（ｕi+1，ｖi+1），・・・｝を｛・・・，（ｕi,ｖi），（δ（ｕi），（ｖi＋ｖi+1）／２）｝，｛（δ（ｕi+1），（ｖi＋ｖi+1）／２），（ｕi+1,ｖi+1），・・・｝というように分割する。ここで、∂（ｗ）は、
【数１５】
0003977110.tif 000016
である。同様に周期的方向がｖ方向の場合に、｛・・・，（ｕi,ｖi），（ｕi+1,ｖi+1），・・・｝を｛・・・，（ｕi，ｖi），（（ｕi，ｖi），（ｕi＋ｕi+1）／２，δ（ｖi））｝，｛（（ｕi＋ｕi+1）／２，δ（ｖi+1）），（ｕi+1，ｖi+1），・・・｝というように分割する。
【００６８】
最後に、分割したパラメータ点列ごとにパラメータ曲線を生成する（ステップＳ６０５）。なお、点列からの曲線生成は、さまざまな方法が提案されているが、ここでは、点列を通過する曲線を生成する周知の方法（「千代倉弘明著、ソリッドモデリングーＣＡＤ／ＣＡＭのための基礎技術、工業調査会刊（１９８５）」に記載）を用いて生成する。
このようにして、曲線をパラメータ曲線に変換する。
【００６９】
次に、図１１を参照しながら本実施形態のパラメータ点列が周期的方向の境界関数列を通過するか否かの判定方法を説明する。
まず、パラメータ点列内の連続する２点の内いずれか１点のパラメータの周期的成分をパラメータ区間の上限または下限の遠い方に変更した点を求める（ステップＳ７０１）。例えば、パラメータ点列内の連続する２点が（ｕi，ｖi）と（ｕi+1，ｖi+1）であって、周期的方向がｕ方向の場合に、点（ｕi+1，ｖi+1）を点（γ（ｕi+1），ｖi+1）に変更し、また、周期的方向がｖ方向の場合には、点（ｕi+1，ｖi+1）を点（ｕi+1，γ（ｖi+1））に変更する。ここで、γ（ｗ）は、
【数１６】
0003977110.tif 000017
である。
【００７０】
次いで、前述のように変更された点をラフパラメータとし、周知の３次元立体形状処理方式（特開２０００‐１９４８８０号公報）に準じ、ラフパラメータ値調整手段によりパラメータ点を計算する（ステップＳ７０２）。ここで求まったパラメータ点の周期的成分は区間外であるために、区間外のパラメータ点（ｕout、ｖout）とする。
【００７１】
次いで、前記区間外のパラメータ点と他方の点のパラメータ空間内における距離と、元の区間内のパラメータ点と他方の点のパラメータ空間内における距離とを比較し（ステップＳ７０３）、周期的方向の境界関数列を通過するか否かを判定する（ステップＳ７０４、Ｓ７０５）。
具体的には、周期的方向がｕ方向の場合に、（ｕi−ｕi+1）2が（ｕi−γ（ｕi+1））2より大きければ周期的方向の境界関数列を通過すると判断し、そうでなければ通過しないと判断する。また、周期的方向がｖ方向の場合に、（ｖi−ｖi+1）2が（ｖi−γ（ｖi+1））2より大きければ周期的方向の境界関数列を通過すると判断し、そうでなければ通過しないと判断する。
このようにして、パラメータ点列が周期的方向の境界関数列を通過するか否かを判定する。
【００７２】
次に、図１２を参照しながら本実施形態のトリム曲面における点の内外判定方法を説明する。
まず、判定対象となるパラメータ点を図５に示す方法により求める（ステップＳ８０１）。
【００７３】
次いで、トリム曲面の境界曲線列のパラメータ曲線列を図９に示す方法により求める（ステップＳ８０２）。
【００７４】
最後に、パラメータ点から延した半直線とパラメータ曲線列との交差回数を調べて（ステップＳ８０３）、奇数ならば内側と判定し（ステップＳ８０４）、偶数ならば外側と判定する（ステップＳ８０５）。
このようにして、トリム曲面に対する点の内外判定を行う。
【００７５】
本実施形態を３次元ＣＡＤシステム等に適用することによって、周期的パラメータ曲線列を含む自由曲面を用いた３次元モデルを設計することができる。
【００７６】
【発明の効果】
以上説明したように、本発明によれば、周期的パラメータ曲線列を含む曲面のパラメータ定義域内のパラメータ点及び周期的パラメータ曲線列を含む曲面のパラメータ曲線を求めることができるパラメータ生成装置及び方法並びにプログラムを提供することができる。
【００７７】
また、本発明によれば、周期的パラメータ曲線列を含む曲面の点の内外判定計算を行うことができる点の自由曲面に対する内外判定装置及び方法並びにプログラムを提供することができる。
【００７８】
また、本発明によれば、周期的パラメータ曲線列を含む曲面の連続したパラメータ曲線列を計算することができるパラメータ曲線列生成装置及び方法並びにプログラムを提供することができる。
【００７９】
さらに、本発明によれば、周期的パラメータ曲線列を含むトリム曲面の点の内外判定計算を行うことができる点のトリム曲面に対する内外判定装置及び方法並びにプログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の一形態に係るデータ処理装置を示すブロック図である。
【図２】本発明の実施の一形態に係るBezier曲線を示す説明図である。
【図３】本発明の実施の一形態に係るBezier曲面を示す説明図である。
【図４】本発明の実施の一形態に係るトリム曲面を示す説明図である。
【図５】本発明の実施の一形態に係るパラメータ生成方法を示すフローチャートである。
【図６】本発明の実施の一形態に係るパラメータ生成方法（周期的曲面の判定方法）を示すフローチャートである。
【図７】本発明の実施の一形態に係るパラメータ生成方法（パラメータ点の正規化方法）を示すフローチャートである。
【図８】本発明の実施の一形態に係る内外判定方法を示すフローチャートである。
【図９】本発明の実施の一形態に係るパラメータ曲線列生成方法を示すフローチャートである。
【図１０】本発明の実施の一形態に係るパラメータ曲線列生成方法（パラメータ曲線への変換方法）を示すフローチャートである。
【図１１】本発明の実施の一形態に係るパラメータ曲線列生成方法（境界関数列通過判定方法）を示すフローチャートである。
【図１２】本発明の実施の一形態に係る点のトリム曲面に対する内外判定方法を示すフローチャートである。
【図１３】曲面モデルとして使用される周期的曲面を示す説明図である。
【図１４】曲面モデルとして使用される周期的曲面のパラメータ空間区間を示す説明図である。
【符号の説明】
３  メモリ
４  ハードディスク
５  入力部
６  出力部
７  ＦＤＤ
８  ＣＤ‐ＲＯＭドライブ
９  バス
１０  通信部
２２  ＣＰＵ
１００  データ処理装置（コンピュータ）
【図１】
0003977110.tif 000018
【図２】
0003977110.tif 000019
【図３】
0003977110.tif 000020
【図４】
0003977110.tif 000021
【図５】
0003977110.tif 000022
【図６】
0003977110.tif 000023
【図７】
0003977110.tif 000024
【図８】
0003977110.tif 000025
【図９】
0003977110.tif 000026
【図１０】
0003977110.tif 000027
【図１１】
0003977110.tif 000028
【図１２】
0003977110.tif 000029
【図１３】
0003977110.tif 000030
【図１４】
0003977110.tif 000031