[go: up one dir, main page]

JP2003085220A - 3D CAD system - Google Patents

3D CAD system

Info

Publication number
JP2003085220A
JP2003085220A JP2001273456A JP2001273456A JP2003085220A JP 2003085220 A JP2003085220 A JP 2003085220A JP 2001273456 A JP2001273456 A JP 2001273456A JP 2001273456 A JP2001273456 A JP 2001273456A JP 2003085220 A JP2003085220 A JP 2003085220A
Authority
JP
Japan
Prior art keywords
point
parent
vector
points
dimensional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2001273456A
Other languages
Japanese (ja)
Inventor
Yasuhiko Yoshida
康彦 吉田
Eiji Shiiba
英二 椎葉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Being Co Ltd
Original Assignee
Being Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Being Co Ltd filed Critical Being Co Ltd
Priority to JP2001273456A priority Critical patent/JP2003085220A/en
Publication of JP2003085220A publication Critical patent/JP2003085220A/en
Withdrawn legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】データ量を大幅に低減してコンピュータの演算
処理の負荷を減少させ、しかも、面の取扱いに一貫性を
もたせた3次元CADシステムの提供。 【解決手段】この発明による3次元CADシステムにお
いては、ベジェパラメータを用いて図形要素が定義さ
れ、面積座標パラメータを使用して表示/出力データの
生成、親子関係データの設定などが行われる。曲面パッ
チで全ての面を表現することにより、面の取扱いに一貫
性をもたせ、図形を記述するためのデータ量を大幅に低
減し、コンピュータの演算処理の負荷を減少させる。
(57) [Summary] [PROBLEMS] To provide a three-dimensional CAD system in which the amount of data is significantly reduced to reduce the processing load of a computer and the handling of surfaces is made consistent. In a three-dimensional CAD system according to the present invention, a graphic element is defined using Bezier parameters, and display / output data is generated using area coordinate parameters, and parent-child relationship data is set. By expressing all surfaces with curved surface patches, the handling of surfaces is made consistent, the amount of data for describing graphics is significantly reduced, and the load on computer processing is reduced.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】この発明は、3次元CAD
(3 Dimentional-Computer Aided Design :3D−CA
D)システム、より詳しくいうと、ベジェ(Bezier)曲
面表現を応用した3次元CADシステム及びそのための
プログラムに関する。
TECHNICAL FIELD The present invention relates to a three-dimensional CAD.
(3 Dimentional-Computer Aided Design: 3D-CA
D) System, more specifically, a three-dimensional CAD system to which Bezier curved surface expression is applied, and a program therefor.

【0002】[0002]

【従来の技術】現在、コンピュータで3次元設計図を描
く「3次元CAD」と呼ばれるシステムが提案されてい
る。例えば、種々の面を使用するソリッドCAD方式
や、複雑な数式で定義された従来の自由曲面を利用する
CAD方式においては、最終的には、最小の自由度で表
現される面素、即ち、微小平面〔通常、細かな三角の平
面要素〕PTに分解する。つまり、立体の全ての曲面を
微小平面PTに分解してその集まり〔「多面体(ポリゴ
ン)」と呼ばれる〕PPで近似するような線形離散化処
理を用いて演算処理を行うので、演算結果は平面や折線
で近似されたものになる。
2. Description of the Related Art Currently, a system called "three-dimensional CAD" for drawing a three-dimensional design drawing on a computer has been proposed. For example, in a solid CAD method that uses various surfaces and a conventional CAD method that uses a free-form surface defined by a complicated mathematical expression, finally, a surface element represented by the minimum degree of freedom, that is, Decompose into a minute plane [usually a fine triangular plane element] PT. In other words, all the curved surfaces of the solid are decomposed into minute planes PT, and the arithmetic processing is performed using a linear discretization processing that is approximated by a collection [called a “polyhedron”] PP. It will be approximated by a broken line.

【0003】[0003]

【発明が解決しようとする課題】従来のソリッドCAD
方式においては、 (1)円筒や円錐、六面体等というような基本図形(プ
リミティブ)の重ね合わせを行うブール演算により図形
を作成する。 (2)面と面の重なる部分にはフィレット面を張る必要
があり、このフィレット処理には無理があり、意匠設計
に不向きである。 (3)曲面処理では、ほぼ四角の面を定義し、トリム処
理を施して面の形状を整える必要がある。 (4)これらの演算処理はポリゴン近似(線形離散化近
似)を行って線形代数論を応用して近似計算を行ってい
る。 等の特徴を持つので、設計のプロセスを最初から再現す
るという長所があるものの、データ量が多大であってコ
ンピュータの演算処理の負荷が過大であり、また、面の
取扱いに一貫性がない等の問題点があった。この発明
は、上記したような従来技術の問題点を解決し、データ
量を大幅に低減し、コンピュータの演算処理の負荷を減
少させ、しかも、面の取扱いに一貫性をもたせた3次元
CADシステムを提供することを目的とする。
[Problems to be Solved by the Invention] Conventional solid CAD
In the method, (1) a figure is created by a Boolean operation for superimposing basic figures (primitives) such as cylinders, cones, and hexahedrons. (2) It is necessary to stretch a fillet surface in the portion where the surfaces overlap with each other, and this fillet processing is unreasonable and is not suitable for design design. (3) In the curved surface processing, it is necessary to define an almost square surface and perform trim processing to adjust the shape of the surface. (4) These calculation processes perform polygon approximation (linear discretization approximation) and apply linear algebra theory to perform approximation calculation. Although it has the advantage of reproducing the design process from the beginning, it has a large amount of data, the computational load of the computer is excessive, and the handling of the surface is not consistent. There was a problem. The present invention solves the above-mentioned problems of the prior art, significantly reduces the amount of data, reduces the load of computer arithmetic processing, and has a consistent three-dimensional CAD system for handling surfaces. The purpose is to provide.

【0004】[0004]

【課題を解決するための手段】この発明の3次元CAD
システムは、座標情報によって定義される点要素設定手
段と、前記点要素およびベジェパラメータによって定義
される線要素設定手段と、複数の前記線要素によって定
義される面要素設定手段と、複数の前記面要素によって
定義される立体要素設定手段と、設定された複数の前記
要素を連接して所望の立体図形を生成する立体生成手段
とを備えることを特徴とする。
Three-dimensional CAD according to the present invention
The system includes point element setting means defined by coordinate information, line element setting means defined by the point elements and Bezier parameters, surface element setting means defined by a plurality of the line elements, and a plurality of the surfaces. It is characterized by comprising three-dimensional element setting means defined by elements, and three-dimensional generation means for connecting a plurality of the set elements to generate a desired three-dimensional figure.

【0005】この発明によると、面要素は、従来のCA
D方式における面処理方式に対比して、広い領域を一つ
のパッチ(1つの面要素)で表現することが可能にな
る。また、このパッチで全ての面を近似表現するように
しているので、面の取扱いに一貫性をもたせることがで
きる。従って、図形を記述するためのデータ量を大幅に
低減し、コンピュータの演算処理の負荷を減少させるこ
とができる。また、この発明によると、生成される立体
図形が3次形式で表現される空間座標をもつ点群で定義
される場合は、演算数を必要以上に増大せずに、面端の
接線を連続的に接合する関係を維持しつつ面を変形で
き、十分に実用的な3次元図形表現を得ることができ
る。さらに、この発明によると、図形要素の親子関係を
容易に定義可能であり、例えば親図形の曲面上において
当該曲面に沿って子図形を移動することが容易にでき
る。また、各図形要素は参照計数データを持っているの
で、或る要素を削除しようとする場合、参照計数データ
を参照して当該要素が他の要素の構成要因になっている
か否かを確認し、削除の可否を有効に判別することがで
きる。
According to the present invention, the surface element is a conventional CA.
Compared to the surface processing method in the D method, it is possible to express a wide area with one patch (one surface element). In addition, since all the surfaces are approximated by this patch, the handling of the surfaces can be made consistent. Therefore, the amount of data for describing a figure can be significantly reduced, and the load of computer arithmetic processing can be reduced. Further, according to the present invention, when the generated three-dimensional figure is defined by the point group having the spatial coordinates expressed in the cubic form, the tangents of the surface ends are continuously connected without increasing the number of operations more than necessary. The surfaces can be deformed while maintaining the relationship of mechanically joining, and a sufficiently practical three-dimensional graphic representation can be obtained. Further, according to the present invention, it is possible to easily define the parent-child relationship of the graphic elements, and it is possible to easily move the child graphic along the curved surface of the parent graphic, for example. Since each graphic element has reference counting data, when deleting a certain element, refer to the reference counting data to check whether the element is a constituent factor of other elements. Therefore, it is possible to effectively determine whether or not deletion is possible.

【0006】[0006]

【発明の実施の形態】以下、図面を参照しつつ、この発
明の好適な実施例を詳述する。図2は、この発明による
3次元CADシステムのハードウエア構成例を示すブロ
ック図である。この例では、システムは、CPU(中央
処理装置)1、記憶装置2、キーボードやマウス等の入
力操作装置3、ディスプレイ等の表示装置4を備え、こ
れらの装置1〜4は、バス5を介して互いに接続されて
いる。システム全体を制御するCPU1は、所定のプロ
グラムに従って種々の制御を行い、特に、この発明によ
る3次元図形処理を中枢的に遂行する。記憶装置2は、
基本プログラム、各種図形処理プログラムや固定データ
/パラメータを記憶したROM(読出専用メモリ)、各
種データ等を一時記憶するRAM(ランダムアクセスメ
モリ)の外、ハードディスクドライブ(HDD)やCD
−ROMドライブ/FD(フロッピィディスク)ドライ
ブ等の外部記憶装置から成り、これらの外部記憶装置に
は、本発明の各種図形処理プログラムや各種図形データ
/パラメータが記憶されている。また、キーボードやマ
ウス等の入力操作装置3は、ディスプレイ4に表示され
る各種画面を視認しつつ操作することにより、3次元図
形処理を遂行することができる。この例では、バス5に
インターフェイス6を介してプリンタ7やプロッタ8等
の出力装置が接続され、例えば、プロッタ8により3次
元図形を作図することができる。作成されたCADデー
タはFD等の外部記憶装置あるいは図示しないLAN等
の通信回線を経由して外部に出力される。図1は、本発
明の3次元CADシステムの機能構成を示す機能ブロッ
ク図である。本発明の3次元CADシステムは少なくと
も、操作解析、処理実行手段10、点要素生成手段1
1、線(曲線)要素生成手段12、面要素生成手段1
3、立体要素生成手段14、点移動手段15、ベクトル
変更手段16、表示(塗り潰し、回転)手段17、デー
タ出力手段18を含んでいる。操作解析、処理実行手段
10は、本システムの使用者のキーボードやマウスの操
作を検出/解析し、処理指示に従って、以下の各手段1
1〜18を単独で、あるいは組み合わせて使用して指示
された処理を実行し、結果を画面表示し、更にファイル
として、あるいはプリンタや回線に出力する。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Preferred embodiments of the present invention will be described in detail below with reference to the drawings. FIG. 2 is a block diagram showing a hardware configuration example of the three-dimensional CAD system according to the present invention. In this example, the system includes a CPU (central processing unit) 1, a storage device 2, an input operation device 3 such as a keyboard and a mouse, and a display device 4 such as a display. These devices 1 to 4 are connected via a bus 5. Are connected to each other. The CPU 1 that controls the entire system performs various controls according to a predetermined program, and particularly performs the three-dimensional graphic processing according to the present invention centrally. The storage device 2 is
In addition to the basic program, various graphic processing programs, ROM (read-only memory) that stores fixed data / parameters, RAM (random access memory) that temporarily stores various data, hard disk drive (HDD) and CD
An external storage device such as a ROM drive / FD (floppy disk) drive, which stores various graphic processing programs of the present invention and various graphic data / parameters. Further, the input operation device 3 such as a keyboard or a mouse can perform three-dimensional graphic processing by visually operating various screens displayed on the display 4. In this example, an output device such as a printer 7 or a plotter 8 is connected to the bus 5 via an interface 6, and for example, a three-dimensional figure can be drawn by the plotter 8. The created CAD data is output to the outside through an external storage device such as FD or a communication line such as LAN (not shown). FIG. 1 is a functional block diagram showing the functional configuration of the three-dimensional CAD system of the present invention. The three-dimensional CAD system of the present invention includes at least operation analysis, processing execution means 10 and point element generation means 1.
1, line (curve) element generating means 12, surface element generating means 1
3, a three-dimensional element generating means 14, a point moving means 15, a vector changing means 16, a display (painting, rotation) means 17, and a data output means 18. The operation analysis / process execution means 10 detects / analyzes the operation of the keyboard or mouse of the user of this system, and according to the processing instruction, the following means 1
1 to 18 are used alone or in combination to execute the instructed processing, the result is displayed on the screen, and further output as a file or to a printer or a line.

【0007】点要素生成手段11は、点データを生成す
る。図3は、本発明の点データ生成処理の内容を示すフ
ローチャートである。S10においては、使用者の指示
が子図形作成か否かが判定され、肯定の場合にはS12
に移行するが、否定の場合にはS11に移行する。S1
1においてはマウスあるいはキーボードから3次元座標
情報を入力する。なお、マウスで入力する場合には、例
えば、まずXY座標平面において所望の位置をクリック
して点データを生成し、この点をZ軸方向に所望の距離
だけ移動させる(オフセット)ことによって所望の3次
元座標情報を入力する。S18においては、入力した点
データをシステム内の点データリストに登録する。S1
2においては、例えばマウスによって既に作成されてい
る親図形(線、三角面あるいは四画面)を選択する。S
13においては、詳細は後述するが、カーソルの面積座
標パラメータの3次元座標への写像演算により親図形上
に乗った3Dカーソルを表示する。この面積座標パラメ
ータは、後述するが、線の場合には親図形上の位置と、
面の場合には面内の任意の位置と一意に対応している。
更に定義を立体にも拡張可能であり、線や立体の場合に
は「面積」を表してはいなが、これらを含めて「面積座
標」という用語を使用する。S14においては、マウス
が移動されたか否かが判定され、否定の場合にはS16
に移行するが、肯定の場合にはS15に移行する。S1
5においては、詳細は後述するが、マウス移動情報に基
づき、面積座標上のカーソル座標を移動させ、S13に
戻る。従って、マウスの操作に従って親図形上の3Dカ
ーソルが移動するので、使用者はマウスを操作して3D
カーソルを所望の位置に移動させる。S16においては
マウスがクリックされたか否かが判定され、否定の場合
にはS14に戻るが、肯定の場合にはS17に移動す
る。S17においては、3Dカーソルが示している親図
形上の点の3次元座標データをシステム内の点データリ
ストに登録するが、このデータには親図形上の面積座標
パラメータが含まれている。
The point element generating means 11 generates point data. FIG. 3 is a flowchart showing the contents of the point data generation processing of the present invention. In S10, it is determined whether or not the user's instruction is to create a child figure, and if affirmative, S12.
If it is negative, the process proceeds to S11. S1
In 1, the three-dimensional coordinate information is input from the mouse or keyboard. When inputting with a mouse, for example, first click a desired position on the XY coordinate plane to generate point data, and move the point in the Z-axis direction by a desired distance (offset). Enter 3D coordinate information. In S18, the input point data is registered in the point data list in the system. S1
In 2, for example, the parent figure (line, triangular surface or four screens) already created is selected by the mouse. S
In 13, although the details will be described later, a 3D cursor placed on the parent figure is displayed by a mapping operation of the area coordinate parameter of the cursor to the three-dimensional coordinates. This area coordinate parameter will be described later, but in the case of a line, the position on the parent figure,
In the case of a surface, it corresponds uniquely to any position in the surface.
Furthermore, the definition can be extended to a solid, and in the case of a line or a solid, the term "area" is not used, but the term "area coordinate" is used inclusively. In S14, it is determined whether or not the mouse has been moved, and in the negative case, S16
If it is affirmative, the process proceeds to S15. S1
In 5, the details will be described later, but the cursor coordinates on the area coordinates are moved based on the mouse movement information, and the process returns to S13. Therefore, since the 3D cursor on the parent figure moves according to the mouse operation, the user operates the mouse to perform 3D
Move the cursor to the desired position. In S16, it is determined whether or not the mouse is clicked. If the result is negative, the process returns to S14, but if the result is affirmative, the process proceeds to S17. In S17, the three-dimensional coordinate data of the point on the parent figure indicated by the 3D cursor is registered in the point data list in the system, and this data includes the area coordinate parameter on the parent figure.

【0008】線(曲線)要素生成手段12、は線データ
を生成する。図4は、本発明の線データ生成処理の内容
を示すフローチャートである。S20においては線の端
点となる、予め作成されている2点を選択する。S21
においては2点は同一図形の子か否かが判定され、肯定
の場合にはS22に移行するが、否定の場合にはS23
に移行する。S22においては親図形上に乗る曲線デー
タを生成する。詳細は後述するが、本発明においては線
データは、両端点および内部制御点の座標とそれぞれの
点における接線(制御)ベクトルの情報を含むベジェ
(Bezier)パラメータによって表現(定義)されてい
る。S22においては、親図形情報に基づき、曲線が親
図形上に乗るように上記曲線のパラメータが決定され
る。また、端点となる点データの参照係数(カウント)
値を+1する。S23においては、2点を結ぶ直線デー
タを生成する。線の表現形式は前記子図形の場合と同様
のベジェパラメータによる表現であるが、端点の接線制
御ベクトル方向がデフォルトで他の端点を向くように設
定されるために直線となる。また、端点の点データの参
照カウント値を+1する。S24においてはS23ある
いはS24において生成された線データをシステムの線
データリストに登録する。線データには親子の設定はな
いが、線データが参照する端点の点データが子図形であ
れば線も子図形となる。
The line (curve) element generating means 12 generates line data. FIG. 4 is a flow chart showing the contents of the line data generation processing of the present invention. In S20, two pre-created points that are the end points of the line are selected. S21
, It is determined whether or not the two points are children of the same figure, and if affirmative, the process proceeds to S22, but if negative, S23.
Move to. In S22, curve data to be placed on the parent figure is generated. Although details will be described later, in the present invention, the line data is expressed (defined) by Bezier parameters including the coordinates of both end points and the internal control point and the information of the tangent (control) vector at each point. In step S22, the parameters of the curve are determined based on the parent graphic information so that the curve will ride on the parent graphic. In addition, the reference coefficient (count) of the end point data
Increment the value by 1. In S23, straight line data connecting two points is generated. The line is expressed by the Bezier parameter similar to the case of the child figure, but is a straight line because the tangent control vector direction of the end point is set to face the other end point by default. Further, the reference count value of the end point data is incremented by one. In S24, the line data generated in S23 or S24 is registered in the line data list of the system. The line data has no parent / child setting, but if the point data of the end point referred to by the line data is a child figure, the line is also a child figure.

【0009】面要素生成手段13は面データを生成す
る。面データには、少なくとも三角面データおよび四画
面データがあり、それぞれ辺を構成する3本、あるいは
4本の線データおよび1個あるいは複数個の内部制御点
データを含んでいる。立体要素生成手段14は立体デー
タを生成する。なお立体とは複数の面データが接合され
た図形であり、表面が閉じている必要はない。点移動手
段15は、点データを移動する機能を提供する。親図形
である点を選択した場合は独立して任意に移動可能であ
る。線、面、立体を選択した場合には、それらの図形に
含まれる複数の点データが同時に移動する。点が子図形
である場合には、親図形上に乗って、あるいは所定距離
(オフセット)を保って移動する必要があるので、図3
のS13〜S15の処理と同じ方法で、マウス操作に基
づいて3Dカーソルの代わりに選択された1つあるいは
複数の点を移動/表示させる。この場合は点のオフセッ
ト座標値(m_Ab_Ref)が移動に伴って更新される。
The surface element generating means 13 generates surface data. The surface data includes at least triangular surface data and four-screen data, each of which includes three or four line data and one or a plurality of internal control point data that form each side. The three-dimensional element generating means 14 generates three-dimensional data. It should be noted that the solid is a figure in which a plurality of surface data are joined, and the surface does not need to be closed. The point moving means 15 provides a function of moving point data. When a point that is a parent figure is selected, it can be moved independently and arbitrarily. When a line, a plane, or a solid is selected, a plurality of point data included in those figures move at the same time. When the point is a child figure, it is necessary to move on the parent figure or keep a predetermined distance (offset).
In the same method as the processing of S13 to S15, one or more selected points are moved / displayed instead of the 3D cursor based on the mouse operation. In this case, the offset coordinate value (m_Ab_Ref) of the point is updated with the movement.

【0010】ベクトル変更手段16は、選択された線あ
るいは面のベジェパラメータである端点や内部制御点の
接線制御ベクトルの方向や大きさを変更する。例えば線
の端点の接線制御ベクトルの方向は当該端点から出る線
の方向を決定し、ベクトルの大きさは曲率に影響する。
従って、1つの端点から出る2つの線の接線制御ベクト
ルの方向が正反対になるように変更することにより、2
本の曲線を連続的(折れずに、連続微分可能)に接続す
ることができる。面を接続する場合も、2つあるいは3
つの面が共有する端点から出る2つ、あるいは3つの線
の接線ベクトルの方向を正反対、あるいは同一平面内に
乗るように変更することにより、滑らかに接続すること
ができる。子図形となる線または面の制御ベクトルが選
択され変更される場合は、選択されている制御ベクトル
のバイアスベクトルが更新される。これらバイアスベク
トルは点の位置の場合と同様に、親図形に乗っかる様に
計算されたベクトルからのずれを表現しており、親図形
が変形されてもその値が保持される。(各面のm_Cnt_ref
フィールド)
The vector changing means 16 changes the direction and size of the tangent control vector of the end point or internal control point which is the Bezier parameter of the selected line or surface. For example, the direction of the tangent control vector at the endpoint of the line determines the direction of the line exiting the endpoint, and the magnitude of the vector affects the curvature.
Therefore, by changing the directions of the tangent control vectors of the two lines coming out from one end point to be opposite,
It is possible to connect the curves of a book continuously (without breaking, continuously differentiable). Even when connecting faces, two or three
Smooth connection can be achieved by changing the directions of the tangent vectors of two or three lines that come out from the end points shared by one surface so that they are in opposite directions or in the same plane. When the control vector of the line or face that is the child figure is selected and changed, the bias vector of the selected control vector is updated. Similar to the case of the position of the point, these bias vectors represent the deviation from the vector calculated so as to ride on the parent figure, and the value is held even if the parent figure is deformed. (M_Cnt_ref of each surface
field)

【0011】表示(塗り潰し、回転)手段17は、各種
図形データを画面に表示する。図5は、本発明の線描画
処理の内容を示すフローチャートである。詳細は後述す
るが、線の面積座標パラメータβを0から1まで変化さ
せることは、3次元座標において曲線上を一方の端点か
ら他方の端点まで移動することに対応する。S30にお
いては、線の面積座標パラメータβを始点(β=0)に
設定する。S31においては面積座標上の描画点の間隔
dとして所定値(例えば線を100分割するのであれば0.0
1)を設定する。S32においては、線のベジェパラメ
ータを使用してβを3次元座標に写像演算し、描画点の
3次元座標値を得る。S33においては3次元座標値を
更に画面(スクリーン)座標に写像する。S34におい
ては、画面座標上で直前に処理した描画点と接続する線
を描画する。S35においては、βにdを加算する。S
36においてはβが1(終点)を越えたか否かが判定さ
れ、判定結果が否定の場合にはS32に戻って描画を繰
り返す。
The display (filling and rotating) means 17 displays various graphic data on the screen. FIG. 5 is a flowchart showing the contents of the line drawing process of the present invention. Although the details will be described later, changing the area coordinate parameter β of the line from 0 to 1 corresponds to moving from one end point to the other end point on the curve in three-dimensional coordinates. In S30, the area coordinate parameter β of the line is set to the starting point (β = 0). In S31, a predetermined value is set as the distance d between the drawing points on the area coordinates (for example, 0.0 if the line is divided into 100).
1) is set. In S32, β is mapped to three-dimensional coordinates using the Bezier parameter of the line to obtain the three-dimensional coordinate value of the drawing point. In S33, the three-dimensional coordinate values are further mapped to screen coordinates. In S34, a line connecting to the drawing point processed immediately before on the screen coordinates is drawn. In S35, d is added to β. S
At 36, it is determined whether β exceeds 1 (end point), and if the determination result is negative, the process returns to S32 and the drawing is repeated.

【0012】図6は、本発明の面描画処理の内容を示す
フローチャートである。詳細は後述するが、面の面積座
標パラメータα、βをそれぞれ0から1まで変化させる
ことは、3次元座標において面上の全ての位置に点を移
動することに対応する。S40においては面の面積座標
パラメータαを始点(α=0)に設定する。S41にお
いては、面積座標上の描画点の間隔dとして所定値(例
えば直交する2方向に面をそれぞれ100分割するのであ
れば0.01)を設定する。S42においては、面の面積座
標パラメータβを始点(β=0)に設定する。S43に
おいては、面の辺を構成する線データのベジェパラメー
タを使用してα、βを3次元座標に写像演算し、描画点
の3次元座標値を得る。S44においては、3次元座標
値を更に画面(スクリーン)座標に写像する。但し、現
在設定されている方向から見た場合に影になる(手前に
描画面がある)場合には写像しない。S45において
は、画面座標上に写像された点の近傍の点との間に微小
な三角面パッチを張り、特定の方向から光りが当たった
場合の明るさを考慮して輝度を決定し、パッチを塗りつ
ぶす。S46においては、βにdを加算し、S47にお
いてはβが1を越えたか否かが判定され、結果が否定の
場合にはS43に戻る。S48においてはαにdを加算
し、S49においてはαが1を越えたか否かが判定さ
れ、結果が否定の場合にはS42に戻る。データ出力手
段18は、前記した表示手段と同様の処理方法によって
対象物の全表面上に所定間隔で配置される多数の点の3
次元座標データを算出し、当該データに基づいて、例え
ばNCマシンに直接入力可能な標準フォーマットの3次
元形状データ(カッターパスデータ)を出力する。以
下、実施態様について更に詳細に説明する。
FIG. 6 is a flowchart showing the contents of the surface drawing processing of the present invention. Although details will be described later, changing the area coordinate parameters α and β of the surface from 0 to 1 corresponds to moving the point to all positions on the surface in three-dimensional coordinates. In S40, the area coordinate parameter α of the surface is set to the starting point (α = 0). In S41, a predetermined value (for example, 0.01 if the surface is divided into 100 in two orthogonal directions) is set as the distance d between the drawing points on the area coordinates. In S42, the area area coordinate parameter β is set to the starting point (β = 0). In S43, α and β are mapped to three-dimensional coordinates by using the Bezier parameters of the line data forming the sides of the surface, and the three-dimensional coordinate values of the drawing points are obtained. In S44, the three-dimensional coordinate values are further mapped to screen coordinates. However, when the shadow is seen from the currently set direction (the drawing surface is in the foreground), it is not mapped. In step S45, a small triangular patch is set between the point mapped on the screen coordinates and a point near the point, and the brightness is determined in consideration of the brightness when light is shined from a specific direction, and the patch is determined. To fill. In S46, d is added to β, it is determined in S47 whether β exceeds 1, and if the result is negative, the process returns to S43. In S48, d is added to α, it is determined in S49 whether α exceeds 1, and if the result is negative, the process returns to S42. The data output means 18 is composed of a large number of points arranged at predetermined intervals on the entire surface of the object by the same processing method as the display means.
Dimensional coordinate data is calculated, and based on the data, for example, three-dimensional shape data (cutter path data) in a standard format that can be directly input to the NC machine is output. Hereinafter, the embodiment will be described in more detail.

【0013】<<データ構造および写像の説明>> <3次元CADの3Dモデルデータの構造> <1.モデル形状データ>図7は、システムのデータ構
造を示す説明図である。3Dモデル形状を表現するデー
タは全て一つのルートクラスCMdlから派生されるオ
ブジェクトであり、図7に示すような階層をなしてい
る。それぞれのデータはC++(オブジェクト指向プログ
ラミング言語)のクラスになっており、各々のデータ
(属性)とメソッドを持っている。 <1.1.共通データ(全ての形状データに共通するデ
ータ)>全ての図形データの派生元になるベースクラス
で共通の情報を格納している。
<< Explanation of Data Structure and Mapping >><Structure of 3D model data of three-dimensional CAD><1. Model Shape Data> FIG. 7 is an explanatory diagram showing the data structure of the system. All data representing the 3D model shape are objects derived from one root class CMdl, and have a hierarchy as shown in FIG. Each data is a class of C ++ (Object Oriented Programming Language) and has each data (attribute) and method. <1.1. Common data (data common to all shape data)> Common information is stored in the base class from which all figure data is derived.

【0014】・CMdl* m_pMdl; オブジェクト実体アドレ
ス:通常は自分自身で複写時はオリジナルを指す。 ・TpUINT32 m_nMdlType;データタイプ識別子(MDL Cl
ass ID):サブタイプ識別子(m_wSchemaNo)と組み合わせ
て、このオブジェクトのクラスを識別すると共にデータ
フォーマットの識別でもある。 ・TpUINT16 m_wSchemaNo;サブタイプ識別子(Mdl cla
ss schema No.) ・TpINT32 m_nCount;参照カウント:これを構成要
素として含む図形からの参照カウント値。(1)点:線
からの参照カウント(線分端点)、(2)線:面からの
参照カウント(面境界線)、(3)面:立体からの参照
カウント(立体境界面) ・TpUINT16 m_wDispAttr;表示モード(16bit) ・TpUINT16 m_wSelectStatus;選択状態(16bit) ・TpUINT16 m_wAttrFlags ;各種フラグビット(16bi
t)、(1)bit-0:変更可否(0=変更可、1=変更禁
止)、(2)bit-1:編集用コピー(0=実体、1=コピ
ー)、(3)bit-2..3:負データ判別フラグ(00=)、レ
ンダリング時穴図形として描画する為使用する。 ・CCoordinate* m_pParentCoordinate;座標系(ローカル
座標系)ポインタ:この図形が属しているローカル座標
系を指す。ただし、このオブジェクトが座標系の場合
は、その親座標系を指す。 ・CMdl* m_pParentRelation;親図形(親亀)ポインタ:点
が他の図形に拘束されている場合には、その図形のアド
レスを格納する。この場合座標は親図形の座標系パラメ
ータによって計算される。オブジェクトが線および面の
ときは、制御ベクトルが親図形に乗っるように設定され
るべきことを示す。
CMdl * m_pMdl; Object entity address: usually refers to the original when copying by itself.・ TpUINT32 m_nMdlType; Data type identifier (MDL Cl
ass ID): Combined with the subtype identifier (m_wSchemaNo), it identifies the class of this object and also identifies the data format.・ TpUINT16 m_wSchemaNo; Subtype identifier (Mdl cla
ss schema No.)-TpINT32 m_nCount; Reference count: Reference count value from the figure including this as a constituent element. (1) Point: reference count from line (end point of line segment), (2) line: reference count from face (face boundary line), (3) face: reference count from solid (solid boundary face) ・ TpUINT16 m_wDispAttr ; Display mode (16bit) ・ TpUINT16 m_wSelectStatus; Selection status (16bit) ・ TpUINT16 m_wAttrFlags; Various flag bits (16bi
t), (1) bit-0: Changeable (0 = changeable, 1 = change prohibited), (2) bit-1: copy for editing (0 = substance, 1 = copy), (3) bit-2 ..3: Negative data discrimination flag (00 =), used for rendering as a hole figure during rendering. -CCoordinate * m_pParentCoordinate; Coordinate system (local coordinate system) pointer: Points to the local coordinate system to which this figure belongs. However, if this object has a coordinate system, it points to its parent coordinate system. CMdl * m_pParentRelation; Parent figure (parent turtle) pointer: If the point is constrained by another figure, the address of that figure is stored. In this case, the coordinates are calculated by the coordinate system parameters of the parent figure. When the object is a line or a face, it indicates that the control vector should be set so as to ride on the parent figure.

【0015】(1)座標系(ローカル座標系) 図形の属す座標系を知るには、座標系(ローカル座標系)
ポインタm_pParentCoordinateを参照する。例えば点の
場合、その位置座標は自分のローカル座標系内での値が
設定されているので、もしワールド座標系に変換する必
要があれば、このフィールドを参照してトップレベルの
座標系まで辿りながら変換して行く。 (2)親図形(親亀) 他の図形に束縛される図形の場合は、親図形(親亀)ポイ
ンタm_pParentRelationに親となる図形のアドレスを設
定する。点のみ親図形を指定することが出来、後述する
ように、点の親図形での位置を決める面積座標情報を同
時に設定する。 (3)データタイプ識別子、サブタイプ識別子 この値はデータの書式を判別するためのもので、例え
ば、選ばれた図形の面の種類を判別しそれぞれ処理する
ために使用される。この識別情報は外部ファイルから図
形データを読み込んで前の状態を復元するためにも用い
られる。例えば、この場合の処理イメージを擬似コーデ
ィングで示すと次のようになる。
(1) Coordinate system (local coordinate system) To know the coordinate system to which a figure belongs, coordinate system (local coordinate system)
Refer to the pointer m_pParentCoordinate. For example, in the case of a point, its position coordinate is set in the local coordinate system, so if you need to convert to the world coordinate system, refer to this field and trace to the top level coordinate system. While converting. (2) Parent figure (parent turtle) In the case of a figure bound to another figure, the address of the parent figure is set in the parent figure (parent turtle) pointer m_pParentRelation. A parent figure can be specified only for points, and as will be described later, area coordinate information that determines the position of the point in the parent figure is set at the same time. (3) Data type identifier, subtype identifier This value is used to determine the format of the data, and is used, for example, to determine the type of surface of the selected graphic and process each. This identification information is also used to read the graphic data from the external file and restore the previous state. For example, the processing image in this case is shown below by pseudo coding.

【0016】<1.2.点のデータ(3次元空間上の1
点を表現するデータ)>点を現すデータとしての固有の
属性は下記のとおりであり、大きく分けると独立した点
である場合と親亀図形に乗っかった点の場合に分けられ
る。 ・CPoint3d m_Xyz;ローカル座標(x,y,z) ・CPoint2d m_Ab;親亀図形パラメータ(A、B)親亀
ありの場合のみ有効:この点が親亀図形の上に束縛され
る場合に、その親亀図形でのパラメータ座標を表してい
る。 ・CPoint3d m_Ab_Ref;親亀図形からのオフセットベ
クトル: 親亀ありの場合のみ有効。上記親亀図形パラ
メータによる座標計算後にこのオフセットを加算し点の
座標値とする。座標フィールドm_Xyzは、この点の3次
元座標で3つの値(x,y,z)で表現される。値はこの点
が属すローカル座標系での値であり、点の表示処理など
必要に応じてワールド座標系に変換される。座標フィー
ルドm_Xyzの具体的なデータフォーマットは次の通り
で、3次元の座標、ベクトルのフォーマットである。 ・double x;X座標 ・double y;Y座標 ・double z;Z座標 独立した点の場合は、この座標フィールドm_Xyzに直接
所望の(x,y,z)値を設定するすれば良い。
<1.2. Point data (1 in 3D space
Data that expresses points)> Unique attributes as data that represent points are as follows, and can be roughly classified into independent points and points that lie on a parent turtle figure.・ CPoint3d m_Xyz; local coordinates (x, y, z) ・ CPoint2d m_Ab; parent turtle figure parameters (A, B) Effective only when the parent turtle exists: If this point is bound on the parent turtle figure, its It shows the parameter coordinates in the parent turtle figure.・ CPoint3d m_Ab_Ref; Offset vector from parent turtle figure: Effective only when parent turtle is present. After the coordinates are calculated using the parent turtle graphic parameters, this offset is added to obtain the coordinate values of the points. The coordinate field m_Xyz is represented by three values (x, y, z) in the three-dimensional coordinates of this point. The value is a value in the local coordinate system to which this point belongs, and is converted to the world coordinate system as necessary for display processing of the point. The specific data format of the coordinate field m_Xyz is as follows and is a three-dimensional coordinate and vector format. -Double x; X coordinate-double y; Y coordinate-double z; Z coordinate In the case of independent points, the desired (x, y, z) value may be directly set in this coordinate field m_Xyz.

【0017】点が別の図形を親亀としている場合は、座
標値を直接指定することは出来ない。その代わりに親亀
図形パラメータフィールドm_Abに、親亀図形上でのこの
点の面積座標値(A、B)を格納して置く。実際の点の座
標値を得るには、ここで指定された面積座標値(A、B)
を用いて、親亀図形の種類に応じて3次元空間へマッピ
ングされた値が使用される。面積座標値(A、B)の具体
的なデータフォーマットは次の通りで、2次元の座標、
ベクトルのフォーマットである。 ・double x;パラメータa ・double y;パラメータb
When a point has another figure as a parent turtle, the coordinate value cannot be directly specified. Instead, the area coordinate values (A, B) of this point on the parent turtle figure are stored in the parent turtle figure parameter field m_Ab. The area coordinate value (A, B) specified here is used to obtain the actual point coordinate value.
By using, the value mapped to the three-dimensional space is used according to the type of parent turtle figure. The specific data format of the area coordinate value (A, B) is as follows.
It is a vector format.・ Double x; parameter a ・ double y; parameter b

【0018】図9は、親亀図形パラメータの設定を示す
説明図である。点の親亀図形となるものは次の2種類で
ありそれぞれ指定方法が異なっている。 (1)線分(曲線) 親亀図形が線分(曲線)の場合は、親亀図形の曲線座標
βをm_Ab.xに格納する。(m_Ab.yは未使用)この場合点
はβ値の変化に応じて曲線に束縛されて移動することに
なる。 (2)面パッチ(三角、四角パッチ) 親亀図形が面パッチ(曲面パッチ)の場合は、親亀図形
の面積座標を現す2つのパラメータ値をそれぞれm_Ab.x
およびm_Ab.yに格納する。(具体的な値の設定方法は図
9の表を参照)この場合点はパラメータの変化に応じて
親亀曲面上に束縛されて移動することになる。図8は、
親亀図形からのオフッセットを示す説明図である。親亀
図形からのオフセットm_Ab_Refは、図8に示すように親
亀図形上の位置からの点の位置オブセットである。上記
の何れの場合にも、親亀図形パラメータフィールドm_Ab
の変化に応じて親図形に完全に乗っかった位置からこの
オフセットベクトル分だけ離れた位置を点が移動するこ
とになる。図9において、四角面パッチ以外は、親亀図
形の面積座標を直接的に格納している。図9下部に示す
ように、四角面パッチの場合、長さ1の辺を持つ正方形
内の(A,B)で分割される4つの矩形領域の面積(α,β,
γ,δ)が四角面パッチの面積座標になっている。
FIG. 9 is an explanatory diagram showing the setting of parent turtle graphic parameters. There are the following two types of dots that are the turtle shape, and the specification method is different for each. (1) Line segment (curve) When the parent turtle figure is a line segment (curve), the curve coordinate β of the parent turtle figure is stored in m_Ab.x. (M_Ab.y is not used) In this case, the point moves while being bound by the curve according to the change of β value. (2) Surface patch (triangle, square patch) When the parent turtle figure is a surface patch (curved surface patch), two parameter values that represent the area coordinates of the parent turtle figure are m_Ab.x.
And m_Ab.y. (Refer to the table of FIG. 9 for the specific value setting method.) In this case, the point is constrained and moves on the parent turtle curved surface according to the change of the parameter. Figure 8
It is explanatory drawing which shows offset from a turtle figure. The offset m_Ab_Ref from the parent turtle graphic is the position offset of the point from the position on the parent turtle graphic, as shown in FIG. In any of the above cases, the parent turtle graphic parameter field m_Ab
The point moves at a position separated by this offset vector from the position where the parent figure was completely ridden according to the change of. In FIG. 9, the area coordinates of the parent turtle figure are directly stored except for the square patch. As shown in the lower part of FIG. 9, in the case of a square patch, the area (α, β, area of four rectangular regions divided by (A, B) in a square having sides of length 1
γ, δ) are the area coordinates of the square patch.

【0019】<1.3.線分> 線分は2点を結ぶ直線もしくは曲線である。 ・CMdlDot* m_pDot[2];線分の2端点のポインタ ・CPoint3d m_Vect[2];端点制御点ベクトル ・CPoint3d m_Cnt_ref[2];端点制御点ベクトルバイ
アス ・TpUINT16 m_nAttr_vsel[2];端点制御点ベクトル選
択状態 ・TpUINT16 m_nDivDsp;線分パラメータ刻み分割数
(メッシュ分割などに使用) ・TpUINT16 m_nDivGoku;連続体解析用積分刻み精度
(線分パラメータ刻み分割数) ・bool m_nStFlag;直線フラグ(真の直線を区別
する) 端点となる2点の座標値などの点属性は、線分には直接
持たずフィールドm_pDotに端点となる点のポインタを格
納する。従って、端点を移動する変形操作は、線分自身
の情報を変更せず、点の座標値を変更することになる。
端点制御点ベクトルm_Vectは、それぞれの端点での接ベ
クトルの1/3の大きさを持つ3次元ベクトルである。
なお、このベクトルは線分のローカル座標系で表現され
る。
<1.3. Line segment> A line segment is a straight line or curve connecting two points.・ CMdlDot * m_pDot [2]; Pointer of the two end points of the line segment ・ CPoint3d m_Vect [2]; End point control point vector ・ CPoint3d m_Cnt_ref [2]; End point control point vector bias ・ TpUINT16 m_nAttr_vsel [2]; End point control point vector selection State ・ TpUINT16 m_nDivDsp; Line segment parameter step division number (used for mesh division etc.) ・ TpUINT16 m_nDivGoku; Continuum analysis integration step accuracy (line segment parameter step division number) ・ bool m_nStFlag; Straight line flag (distinguishes true line) ) Point attributes such as the coordinate values of the two end points are not directly held in the line segment, but the pointers of the end points are stored in the field m_pDot. Therefore, the transformation operation of moving the end point changes the coordinate value of the point without changing the information of the line segment itself.
The endpoint control point vector m_Vect is a three-dimensional vector having a size of 1/3 of the tangent vector at each endpoint.
This vector is expressed in the local coordinate system of the line segment.

【0020】図10は、線分の写像を示す説明図であ
る。線分パラメータ(α,β)から三次元空間座標P(α,
β)への写像は、(α,β)について対称な次の総三次式に
より計算する。(基本的に3次Bezier曲線と同じ)
FIG. 10 is an explanatory diagram showing mapping of line segments. From the line segment parameters (α, β), the three-dimensional space coordinate P (α,
The mapping to β) is calculated by the following total cubic equation symmetric with respect to (α, β). (Basically the same as the cubic Bezier curve)

【数1】 [Equation 1]

【0021】ここでDot[0]およびDot[1]は、m_pDot[0]
およびm_pDot[1]が指す端点それぞれの座標を示す位置
ベクトルである。また、数2の式が成立する。
Here, Dot [0] and Dot [1] are m_pDot [0].
And a position vector indicating the coordinates of each of the end points pointed to by m_pDot [1]. Further, the expression of the equation 2 is established.

【0022】[0022]

【数2】 [Equation 2]

【0023】ここでBezier曲線表現との関係を以下調べ
て見ることとする。Bezier曲線は1変数のn次ベルンシ
ュタイン多項式で表現されるもので数3のとおりであ
る。
Here, the relation with the Bezier curve expression will be examined and viewed below. The Bezier curve is expressed by the n-ary Bernstein polynomial of one variable, and is as shown in Equation 3.

【0024】[0024]

【数3】 [Equation 3]

【0025】上記式中のB(t)は次の式で与えられる変
数tの関数である。(ベルンシュタイン関数)
B (t) in the above equation is a function of the variable t given by the following equation. (Bernstein function)

【数4】 [Equation 4]

【0026】また、PiはBezier曲線の制御点で、その
個数はn+1である。なお、上記の第二式によりBezier
曲線はこれら制御点の凸結合になっている。ここで本発
明のCAD表現と比較するため以下のような置き換えを
行う。
Pi is a control point of the Bezier curve, and the number thereof is n + 1. In addition, according to the second formula above, Bezier
The curve is a convex combination of these control points. Here, the following replacement is performed for comparison with the CAD expression of the present invention.

【0027】[0027]

【数5】 [Equation 5]

【0028】これにより本発明のCADの線分(曲線)
表現との間に数6の関係が有ることが判る。
As a result, the CAD line segment (curve) of the present invention
It can be seen that there is a relation of Expression 6 with the expression.

【0029】[0029]

【数6】 [Equation 6]

【0030】従って、次のような関係が導き出される。Therefore, the following relationship is derived.

【0031】[0031]

【数7】 [Equation 7]

【0032】上記のように互いの表現の間で相互変換可
能である。
As described above, mutual conversion is possible between the expressions.

【0033】線分(曲線)の変形操作において本発明の
CAD表現においては、次項以下の説明でも述べるよう
に、一旦連続に接続された二つの線分(曲線)は、その
接続点の座標値を変更しただけでは連続性が壊れない。
具体的に言うと、点の移動、即ち座標値m_Xyzの変更
は、一旦連続になるように設定された制御ベクトルの設
定とは独立に行われるので、一旦、別の操作でこれら制
御ベクトルが隣接する線分間で微分連続に設定されてい
れば、接続点を移動しても制御ベクトルの設定は維持さ
れている。
In the CAD expression of the present invention in the operation of transforming a line segment (curve), two line segments (curve) which are once connected in succession have coordinate values of their connecting points, as will be described in the following description. Continuity is not broken just by changing.
Specifically, the movement of the point, that is, the change of the coordinate value m_Xyz, is performed independently of the setting of the control vector once set to be continuous, so once these control vectors are adjacent to each other by another operation. If differential continuation is set in the line segment, the control vector setting is maintained even if the connection point is moved.

【0034】つまりDot[0]もしくはつまりDot[1]が変更
されても連続性は維持されている。実際上記の第二およ
び第三式の通り、Bezier曲線表現におけるP1もしくは
P2が自動的に計算されている効果を生じる。
That is, continuity is maintained even if Dot [0] or Dot [1] is changed. In fact, as in the second and third equations above, the effect is that P1 or P2 in the Bezier curve representation is automatically calculated.

【0035】図11は、子図形である線分の写像を示す
説明図である。直線(曲面)に親図形がある場合、曲線
を親図形上に乗せる為には、数8の計算式により曲線の
制御ベクトル(m_Vect[0]とm_Vect[1])を求める。
FIG. 11 is an explanatory diagram showing mapping of a line segment which is a child figure. When a straight line (curved surface) has a parent figure, in order to put the curve on the parent figure, the control vectors (m_Vect [0] and m_Vect [1]) of the curve are calculated by the equation (8).

【0036】[0036]

【数8】 [Equation 8]

【0037】この計算式は、点P1の線分座標を(2/3,
1/3)、つまりβ=1/3とし、点P2の線分座標を(1/
3, 2 /3)、つまりβ=2/3として、先ず親図形上に2
点P1とP2を乗せた後、子の曲線がこれら2点P1お
よびP2を通るとして、先に述べた線分の写像式に当て
はめて制御ベクトルについて解くと導かれる。
This calculation formula calculates the line segment coordinates of the point P1 as (2/3,
1/3), that is, β = 1/3, and the line segment coordinates of the point P2 are (1 /
3, 2/3), that is, β = 2/3, first 2 on the parent figure
After the points P1 and P2 are put, it is derived that the child's curve passes through these two points P1 and P2 and is applied to the above-described line segment mapping equation to solve for the control vector.

【0038】ここでDot[k]は端点kの座標で、 Dot[k] = m_pDot[k]→m_Xyz としたものである。なお”→”はポインタであることを
示す(以下同様)。また、同様にDot [k]. Ab_Refは端
点kの制御ベクトルバイアスである。 Line[k]. Ab_Ref = m_p Line [k]→m_ Ab_Ref 制御ベクトルの計算を行うためには、親図形上の点P1
およびP2の3次元座標を求めることが必要である。こ
れには線分の2端点それぞれの親図形上での線分座標/
面積座標から点P1およびP2各々の親図形上での線分
座標/面積座標を計算する必要があるが、それぞれの端
点の親亀図形パラメータ(A、B)、つまりフィールドm_
Abの値がV0およびV1とするとき数9の計算式で求める
ものを使用する。
Here, Dot [k] is the coordinate of the end point k, and Dot [k] = m_pDot [k] → m_Xyz. Note that “→” indicates a pointer (same below). Similarly, Dot [k]. Ab_Ref is the control vector bias of the end point k. Line [k]. Ab_Ref = m_p Line [k] → m_Ab_Ref In order to calculate the control vector, the point P1 on the parent figure is calculated.
It is necessary to obtain the three-dimensional coordinates of P2 and P2. This includes line segment coordinates on the parent figure of each of the two end points of the line segment /
It is necessary to calculate the line segment coordinates / area coordinates on the parent figure of each of the points P1 and P2 from the area coordinates, but the parent turtle figure parameters (A, B) of each end point, that is, the field m_
When the value of Ab is V0 and V1, the one obtained by the calculation formula of Expression 9 is used.

【0039】[0039]

【数9】 [Equation 9]

【0040】この式は2次元平面での直線の3分割点を
求める式に匹敵している。つまり、親亀図形上の面積座
標系では、求める線分(曲線)が直線として存在してい
ることを意味する。(上記の式では、問題の点P1およ
びP2について、親の面積座標系でも同じ記号を用いて
いる。)数8の計算式に現れるm_Cnt_RefやAb_Refとい
ったベクトルバイアスは、意味的には親面に完全に乗っ
かる形状からの変形になる。例えば、端点が親面から剥
離しているような場合、先ずそれら端点が親面に完全に
乗っていることにして計算していることになる。そのよ
うに計算した結果に更にバイアス値m_Cnt_Refを加算し
ている。後に述べる面についても式からこれらのバイア
スを省いているが同じである。
This equation is comparable to the equation for obtaining the three-divided points of a straight line on a two-dimensional plane. That is, it means that the line segment (curve) to be obtained exists as a straight line in the area coordinate system on the parent turtle figure. (In the above formula, the same symbols are used in the area coordinate system of the parent for the points P1 and P2 in question.) Vector biases such as m_Cnt_Ref and Ab_Ref appearing in the calculation formula of Eq. It will be a deformation from the shape of riding completely. For example, when the end points are separated from the master surface, it is calculated that the end points are completely on the master surface. The bias value m_Cnt_Ref is further added to the result of such calculation. The bias is omitted from the equations for the surface described later, but it is the same.

【0041】図12は、2つの面を連続的にする処理を
示す説明図である。二つの線分line1の終点とline2の始
点をC0連続(切れずに)で繋ぐ処理を示すと次のとお
りである。 ・line1.m_pDot[1]→m_Xyz = line2.m_pDot[0]→m_Xyz
;端点の座標を等しくする。この場合点を共有させるの
であれば、 ・line1.m_pDot[1] = line2.m_pDot[0] ;点を共有す
る。とすれば良い。また、同様にC1連続(折れずに)
で繋ぐ場合は、端点ベクトルの向きのみを正反対にす
る。 ・line1.m_pDot[1]→m_Xyz = line2.m_pDot[0]→m_Xyz
; ・vLength1 = line1.m_Vect[1].length() ; ・vLength2 = line2.m_Vect[0].length() ; ・line1.m_Vect[1] = − vLength1 * line2.m_Vect[0]
/ vLength2 ; ここで端点を共有している場合は最初のステップは不要
である。更に、C2連続(曲率連続)に繋ぐ場合は、端
点ベクトルの大きさを等しくし、向きを正反対にする。 ・line1.m_pDot[1]→m_Xyz = line2.m_pDot[0]→m_Xyz
; ・line1.m_Vect[1] = − line2.m_Vect[0] ; ここでも端点を共有している場合は最初のステップは不
要である。なお、図12のように二つの面の間を滑らか
に繋ごうとするなら、この処理をそれぞれの面の境界と
なっている線分line1とline2の組、およびline3とline4
の組にそれぞれ独立して行えばよい。図12下段は面の
間を滑らかに繋いだ結果のイメージを示したものであ
る。線分line1の端点Dにおける制御ベクトルは、線分l
ine2の端点Dでの制御ベクトルを逆向きに複写した状態
に、同じく線分line3の端点Cにおける制御ベクトル
は、線分line4の端点Cでの制御ベクトルを逆向きに複
写した状態に変更されている。データ上の変更はこの二
つだけである。なお、上の例で二つの面が境界線line5
を共有していれば、面の頂点A〜Eを任意に移動しても
面の間の連続性が保持される。共有されていない場合に
は、点DとCにおいては、一方の面に属す点の移動結果
を他方の点に反映させる必要がある。
FIG. 12 is an explanatory diagram showing a process for making two surfaces continuous. The process of connecting the end point of two line segments line1 and the start point of line2 with C0 continuation (without disconnection) is as follows.・ Line1.m_pDot [1] → m_Xyz = line2.m_pDot [0] → m_Xyz
; Make the coordinates of the end points equal. In this case, if you want to share points: ・ line1.m_pDot [1] = line2.m_pDot [0]; Share points. It should be done. Also, similarly C1 continuous (without breaking)
When connecting with, only the direction of the end point vector is opposite.・ Line1.m_pDot [1] → m_Xyz = line2.m_pDot [0] → m_Xyz
; ・ VLength1 = line1.m_Vect [1] .length (); ・ vLength2 = line2.m_Vect [0] .length (); ・ line1.m_Vect [1] = − vLength1 * line2.m_Vect [0]
/ vLength2; If the endpoints are shared here, the first step is not necessary. Furthermore, when connecting to C2 continuity (curvature continuity), the end point vectors are made equal in magnitude and the directions are opposite.・ Line1.m_pDot [1] → m_Xyz = line2.m_pDot [0] → m_Xyz
• line1.m_Vect [1] = − line2.m_Vect [0]; Again, if the endpoints are shared, the first step is unnecessary. Note that if it is attempted to connect two surfaces smoothly as shown in FIG. 12, this processing is performed by a pair of line segments line1 and line2, which are the boundaries of each surface, and line3 and line4.
It is sufficient to carry out each group independently. The lower part of FIG. 12 shows an image of the result of smoothly connecting the surfaces. The control vector at the end point D of the line segment line1 is the line segment l
The control vector at the end point C of the line segment line3 is changed to the state in which the control vector at the end point D of ine2 is copied in the reverse direction. There is. These are the only two changes in the data. In the above example, the two faces are the boundary line line5.
, The continuity between the faces is maintained even if the vertexes A to E of the faces are arbitrarily moved. When not shared, it is necessary to reflect the movement result of the points belonging to one surface at the points D and C to the other point.

【0042】<1.4.三角面>3次元空間上の3点を
結ぶ3線分(曲線)を面境界線とする三角曲面パッチで
ある。線分の場合と同様に、頂点や境界線分の属性情報
は面パッチには直接持たず、それらへのポインタを保持
している。 ・CMdlDot* m_pDot[3];面頂点ポインタ ・CMdlLine* m_pLine[3];面境界線ポインタ:この面の
境界となる3本の線分(曲線) ・CPoint3d m_Vect;面内制御点ベクトル:面の脹らみ
を制御するもの ・CPoint3d m_Cnt_ref;面内制御点ベクトルバイア
ス:面内制御点ベクトル=m_Vect+m_Cnt_ref ・TpUINT16 m_nAttr_vsel;面内制御点選択状態 ・TpUINT16 m_nDivDsp; 面座標パラメータ分割数(幾
何計算、メッシュ分割用) ・TpUINT16 m_nDivGoku;面座標パラメータ分割数(連
続体解析用) ・TpMdlColor m_nColorPaletteNo ;面の表示色 RGBA ・float m_fMin, m_fMax ;マイナスパッチ用範囲
前面と後面のデプス。
<1.4. Triangular surface> This is a triangular curved surface patch having three line segments (curves) connecting three points in a three-dimensional space as surface boundary lines. As in the case of the line segment, the vertex and boundary line segment attribute information is not directly held in the surface patch, but a pointer to them is held.・ CMdlDot * m_pDot [3]; surface vertex pointer ・ CMdlLine * m_pLine [3]; surface boundary line pointer: 3 line segments (curves) that are the boundaries of this surface ・ CPoint3d m_Vect; in-plane control point vector: surface Controlling bulge ・ CPoint3d m_Cnt_ref; In-plane control point vector bias: In-plane control point vector = m_Vect + m_Cnt_ref ・ TpUINT16 m_nAttr_vsel; In-plane control point selection state ・ TpUINT16 m_nDivDsp; Number of plane coordinate parameter division (geometric calculation, For mesh division) ・ TpUINT16 m_nDivGoku; Number of plane coordinate parameter divisions (for continuum analysis) ・ TpMdlColor m_nColorPaletteNo; Display color RGBA ・ float m_fMin, m_fMax; Depth of front and back surface for minus patch.

【0043】面頂点ポインタm_pDotには、この三角面の
頂点となる点のポインタを格納する。これらの頂点は面
の境界線の端点にもなっており、隣接する境界線の間で
共有されている。また、複数の面に共有される場合もあ
り、その場合は共有される点の位置を変更すると、関連
する複数の面が同時に変形される。同様に面境界線ポイ
ンタm_pLineには、この三角面の境界となる線分のポイ
ンタを格納する。また、複数の面に共有される場合もあ
り、その場合は共有される線分を変更すると、関連する
複数の面が同時に変形される。面内制御点ベクトルm_Ve
ctには、三角面の面積座標(1/3,1/3,1/3)での面の凹凸
を制御するベクトルを格納する。このベクトルを大きく
すると中心付近により大きな凹凸をつけることになる。
これはデフォルトでは0ベクトルと設定されている(親
亀図形に乗っかった小亀図形の場合は乗っかるように初
期値を計算する。) 図13は、三角面の写像を示す説明図である。三角面の
面積座標(α,β,γ)から三次元空間座標P(α,β,γ)へ
の写像は、線分と同様(α,β,γ)について対称な数10
の総三次式により計算する。
In the surface vertex pointer m_pDot, the pointer of the point which becomes the vertex of this triangular surface is stored. These vertices are also the endpoints of the boundaries of the face and are shared between adjacent boundaries. Further, it may be shared by a plurality of surfaces, and in that case, when the position of the shared point is changed, the plurality of related surfaces are simultaneously deformed. Similarly, the surface boundary pointer m_pLine stores the pointer of the line segment that becomes the boundary of this triangular surface. Further, it may be shared by a plurality of surfaces, and in this case, when the shared line segment is changed, the plurality of related surfaces are simultaneously deformed. In-plane control point vector m_Ve
In ct, a vector for controlling the unevenness of the surface at the area coordinates (1 / 3,1 / 3,1 / 3) of the triangular surface is stored. If this vector is increased, larger unevenness will be created near the center.
This is set to 0 vector by default (in the case of a small turtle figure that rides on the parent turtle figure, the initial value is calculated so as to ride on it). FIG. 13 is an explanatory diagram showing the mapping of the triangular surface. The mapping from the area coordinates (α, β, γ) of the triangular surface to the three-dimensional space coordinates P (α, β, γ) is similar to the line segment and is expressed by the symmetric number 10 for (α, β, γ).
It is calculated by the total cubic equation of.

【0044】[0044]

【数10】 [Equation 10]

【0045】この式の中での係数ベクトルC[0]〜C[9]
は、数11に示したように頂点座標および境界線制御ベ
クトルと面内制御点ベクトルを組み合わせたもので表現
される。
Coefficient vectors C [0] to C [9] in this equation
Is expressed by a combination of the vertex coordinates and the boundary line control vector and the in-plane control point vector as shown in Expression 11.

【0046】[0046]

【数11】 [Equation 11]

【0047】ここでDot[k]は頂点kの座標である。 ・Dot[k] = m_pDot[k]→m_Xyz また、同様にLine[k]. Vect[0]およびLine[k]. Vect[1]
は境界線分kの制御ベクトルである。 ・Line[k]. Vect[0] = m_p Line [k]→m_Vect[0] ・Line[k]. Vect[1] = m_p Line [k]→m_Vect[1] なお、面積座標系の上で座標(α,β,γ)の何れか一つの
成分の値が0固定の場合は、各々三角面の境界線分の一
つを自然に表現する。例えば、γ=0とした場合は、
Here, Dot [k] is the coordinate of the vertex k.・ Dot [k] = m_pDot [k] → m_Xyz Similarly, Line [k]. Vect [0] and Line [k]. Vect [1]
Is the control vector of the boundary segment k.・ Line [k]. Vect [0] = m_p Line [k] → m_Vect [0] ・ Line [k]. Vect [1] = m_p Line [k] → m_Vect [1] On the area coordinate system When the value of any one of the components of the coordinates (α, β, γ) is fixed to 0, one of the boundary line segments of the triangular surface is naturally expressed. For example, when γ = 0,

【数12】 [Equation 12]

【0048】となって、α+β=1であるので前節1.
3.で述べた線分座標から三次元空間座標への写像式と
比較すると、正に(α,β)を線分座標とし、Dot[0]とDot
[1]を端点とする線分表現そのものになっている。α=
0およびβ=0とした場合も、各々に対応した境界線分
を表現することが分かる。逆に閉じた3本の線分(曲
線)が有れば、それらで張られた三角面を自然に作るこ
とができる。三角面の面積座標系(α,β,γ)は、図13
に示すように平面三角形の頂点がそれぞれ(1,0,0)、(0,
1,0)および(0,0,1)という座標値を持ち、点(α,β,γ)
とこれら3点で三分割されてできた三角形の面積比が丁
度座標(α,β,γ)となるような座標系である。なお、こ
の平面三角形の境界線上では座標値(α,β,γ)のうち一
つが0となるので、前述したように写像先は実際の三角
面の境界線になる。三角面の面内制御点ベクトルm_ Vec
tは、面積座標(1/3,1/3,1/3)に対応した3次元空間上の
点の座標から次のように計算できる。P=P(1/3,1/3,
1/3)とすると、前述の写像式から数13、14の式が
導かれる。
Since α + β = 1, the above 1.
3. Comparing with the mapping equation from the line segment coordinate to the three-dimensional space coordinate described in Section 2, the line segment coordinate is exactly (α, β), and Dot [0] and Dot [0]
It is a line segment itself with [1] as the end point. α =
It can be seen that even when 0 and β = 0, the boundary line segment corresponding to each is expressed. On the contrary, if there are three closed line segments (curves), a triangular surface stretched by them can be created naturally. The area coordinate system (α, β, γ) of the triangular surface is shown in FIG.
The vertices of the plane triangle are (1,0,0), (0,
Points (α, β, γ) with coordinate values (1,0) and (0,0,1)
And the coordinate system is such that the area ratio of a triangle formed by dividing these three points into three is exactly the coordinates (α, β, γ). Since one of the coordinate values (α, β, γ) is 0 on the boundary line of the plane triangle, the mapping destination is the actual boundary line of the triangular surface as described above. In-plane control point vector of triangular surface m_Vec
t can be calculated as follows from the coordinates of the point in the three-dimensional space corresponding to the area coordinates (1 / 3,1 / 3,1 / 3). P = P (1 / 3,1 / 3,
1/3), the equations 13 and 14 are derived from the above mapping equation.

【0049】[0049]

【数13】 [Equation 13]

【0050】従って、Therefore,

【数14】 [Equation 14]

【0051】この計算は三角面を別の面の小亀図形とす
る場合にも利用される。つまり、親亀図形上でのこの三
角面の面内制御点の面積座標を計算し、それから面内制
御点の三次元座標を計算して、得られた座標値を上記の
Pに当てはめれば、親亀図形に張り付いた三角面が得ら
れる。
This calculation is also used when a triangular surface is used as a Kogame figure on another surface. In other words, if the area coordinates of the in-plane control points of this triangular surface on the parent turtle figure are calculated, then the three-dimensional coordinates of the in-plane control points are calculated, and the obtained coordinate values are applied to P above. , Triangular surface attached to the parent turtle figure is obtained.

【0052】[親亀に乗っかる三角面の生成]図14
は、子図形である三角面の写像を示す説明図である。先
ず、三角面の3つの頂点が親亀図形の小亀図形として作
成されている必要がある。この時、それぞれの頂点の親
亀図形パラメータ(A、B)、つまりフィールドm_Abの値
がつぎのとおり予め定められているものとして以下の説
明を行う。 V0:(A0,B0) V1:(A1,B1) V2:(A2,B2) 先ず、親図形の面積座標系での子面の各面内制御点の座
標を求めなければならない。これを説明するため親の面
積座標形状でも対応する点と同じ記号を用いて説明す
る。(同じ記号であるが親の面積座標系での二次元の点
である。)図15は、子図形である三角面の写像を示す
説明図(2)である。ここで、V0〜V2およびPを二次元
の位置ベクトルと考えると、面内制御点は三角形の重心
に位置するから、次の二次元ベクトル式が導かれる。
[Generation of Triangular Surface Riding on Parent Turtle] FIG. 14
FIG. 6 is an explanatory diagram showing a mapping of a triangular surface which is a child figure. First, it is necessary that the three vertices of the triangular surface be created as the small turtle figure of the parent turtle figure. At this time, the following description will be made assuming that the parent turtle graphic parameters (A, B) of each vertex, that is, the value of the field m_Ab is predetermined as follows. V0: (A0, B0) V1: (A1, B1) V2: (A2, B2) First, the coordinates of each in-plane control point of the child face in the area coordinate system of the parent figure must be obtained. In order to explain this, the same symbols as the corresponding points will be used in the parent area coordinate shape. (The same symbol is a two-dimensional point in the area coordinate system of the parent.) FIG. 15 is an explanatory diagram (2) showing the mapping of the triangular surface which is the child figure. Here, if V0 to V2 and P are considered as two-dimensional position vectors, the following two-dimensional vector formula is derived because the in-plane control point is located at the center of gravity of the triangle.

【0053】[0053]

【数15】 [Equation 15]

【0054】なお、親亀図形パラメータ(A、B)の設定
方法は、図9のとおりである。このベクトル式に子面の
4頂点V0〜V2の親亀図形パラメータを座標値として与え
てやれば、子面の面内制御点Pの親面積座標系での座標
が計算できる。なお、面内制御点の面積座標値計算のベ
クトル式自体は、親亀図形となる面が三角面でも四角面
でも同一である。以上の様にして、子面(小亀)の面内
制御点各々の親亀面での面積座標が得られたとすると、
次はこの面積座標を使用して、それを親面の写像式を用
いて面内制御点の3次元座標を得る。このようにして結
局のところ子面となる三角面の面内制御点の3次元座標
値が得られるので、先に述べた面内制御点ベクトル計算
式(数14)を用いて、親面に張り付いた三角面を得る
ことが出来る。Bezie三角パッチ表現との関係を以下調
べて見ることとする。Bezier三角パッチは2変数のn次
ベルンシュタイン多項式で表現されるもので次のとおり
である。
The method of setting the parent turtle graphic parameters (A, B) is as shown in FIG. If the parent turtle graphic parameters of the four vertices V0 to V2 of the child surface are given as coordinate values to this vector formula, the coordinates of the in-plane control point P of the child surface in the parent area coordinate system can be calculated. The vector formula itself for calculating the area coordinate value of the in-plane control point is the same whether the surface to be the parent-game figure is a triangular surface or a square surface. As described above, if the area coordinates on the parent plane of each in-plane control point of the child plane (Kogame) are obtained,
Next, this area coordinate is used to obtain the three-dimensional coordinate of the in-plane control point by using the mapping formula of the master surface. In this way, the three-dimensional coordinate values of the in-plane control points of the triangular surface, which is the child plane in the end, can be obtained, and thus the in-plane control point vector calculation formula (Equation 14) described above is used to determine the parent plane. You can get a sticky triangular surface. The relationship with the Bezie triangular patch expression will be examined and viewed below. The Bezier triangular patch is expressed by a 2-variable nth-order Bernstein polynomial and is as follows.

【0055】[0055]

【数16】 [Equation 16]

【0056】ここでB(u,v)は次の式で与えられる変数
u,vのベルンシュタイン関数である。
Here, B (u, v) is a Bernstein function of variables u and v given by the following equation.

【0057】[0057]

【数17】 [Equation 17]

【0058】また、Pijはパッチの制御点で、その個数
は(n+1)(n+2)/2である。なお、上記の第二式によりBezi
er三角パッチはこれら制御点の凸結合になっている。こ
こで本発明のCAD表現と比較するため以下のような置
き換えを行う。
Pij is a control point of the patch, the number of which is (n + 1) (n + 2) / 2. In addition, according to the above second formula, Bezi
The er triangular patch is a convex combination of these control points. Here, the following replacement is performed for comparison with the CAD expression of the present invention.

【0059】[0059]

【数18】 [Equation 18]

【0060】これにより本発明のCADの三角パッチ表
現と次の関係が有ることが判る。
From this, it is understood that the CAD triangular patch expression of the present invention has the following relationship.

【0061】[0061]

【数19】 [Formula 19]

【0062】従って、次のような関係が導き出される。Therefore, the following relationship is derived.

【0063】[0063]

【数20】 [Equation 20]

【0064】<1.5.四角面>3次元空間上の4点を
結ぶ閉じた4線分(曲線)を面境界線とする四角曲面パ
ッチである。線分の場合と同様に、頂点や境界線分の属
性情報は面パッチには直接持たず、それらへのポインタ
を保持している。以上の考え方は全く前述の三角面と同
じである。 ・CMdlDot* m_pDot[4];面頂点ポインタ ・CMdlLine* m_pLine[4];面境界線ポインタ:この面の
境界となる4本の線分(曲線) ・CPoint3d m_Vect[4];面内制御点ベクトル:面の脹
らみを制御するもの ・CPoint3d m_Cnt_ref[4];面内制御点ベクトルバイア
ス:面内制御点ベクトル=m_Vect+m_Cnt_ref ・TpUINT16 m_nAttr_vsel[4];面内制御点選択状態 ・TpUINT16 m_nDivDsp[2];面座標パラメータ分割数
(幾何計算、メッシュ分割用) ・TpUINT16 m_nDivGoku[2];面座標パラメータ分割数
(連続体解析用) ・TpMdlColor m_nColorPaletteNo ;面の表示色 RGBA ・float m_fMin, m_fMax ;マイナスパッチ用範囲
前面と後面のデプス
<1.5. Square surface> This is a square curved surface patch in which a closed four line segment (curve) connecting four points in a three-dimensional space is used as a surface boundary line. As in the case of the line segment, the vertex and boundary line segment attribute information is not directly held in the surface patch, but a pointer to them is held. The above idea is exactly the same as the above-mentioned triangular surface.・ CMdlDot * m_pDot [4]; surface vertex pointer ・ CMdlLine * m_pLine [4]; surface boundary line pointer: 4 line segments (curves) that are the boundaries of this surface ・ CPoint3d m_Vect [4]; in-plane control point vector : Controls the expansion of the surface ・ CPoint3d m_Cnt_ref [4]; In-plane control point vector bias: In-plane control point vector = m_Vect + m_Cnt_ref ・ TpUINT16 m_nAttr_vsel [4]; In-plane control point selection state ・ TpUINT16 m_nDivDsp [ 2]; Surface coordinate parameter division number (for geometric calculation, mesh division) ・ TpUINT16 m_nDivGoku [2]; Surface coordinate parameter division number (for continuum analysis) ・ TpMdlColor m_nColorPaletteNo; Face display color RGBA ・ float m_fMin, m_fMax; Minus Range for patch Front and back depth

【0065】面頂点ポインタm_pDotには、この四角面の
頂点となる点のポインタを格納する。これらの頂点は面
の境界線の端点にもなっており、隣接する境界線の間で
共有されている。また、複数の面に共有される場合もあ
り、その場合は共有される点の位置を変更するとそれを
参照する複数の面が同時に変形される。同様に面境界線
ポインタm_pLineには、この四角面の境界となる線分の
ポインタを格納する。これも複数の面に共有される場合
もあり、その場合共有される線分を変形するとそれを参
照する複数の面が同時に変形される。面内制御点ベクト
ルm_Vectには、面積座標( 4/9, 2/9, 1/9, 2/9 )、( 2/
9, 4/9, 2/9, 1/9 )、( 1/9, 2/9, 4/9, 2/9 )および(
2/9, 1/9, 2/9, 4/9 )における四角面の凹凸を制御する
ベクトルを格納する。数の違いは有るが前述の三角面と
同じ働きのものである。これらはデフォルトでは0ベク
トルと設定されている。(親亀図形に乗っかった小亀図
形の場合は乗っかるように初期値を計算する。) 四角面の面積座標(α,β,γ,δ)は、面が本質的に二次
元であるゆえ、実は二つのパラメータ(u,v)でから計算
できるので、仮に次式によってこれらの関係を定めるこ
ととする。
In the surface vertex pointer m_pDot, a pointer for the point that becomes the vertex of this square surface is stored. These vertices are also the endpoints of the boundaries of the face and are shared between adjacent boundaries. Also, it may be shared by a plurality of surfaces, and in that case, when the position of a shared point is changed, a plurality of surfaces referencing it are simultaneously deformed. Similarly, the surface boundary pointer m_pLine stores the pointer of the line segment that becomes the boundary of this square surface. This may also be shared by a plurality of faces, and in this case, when a shared line segment is transformed, a plurality of faces that refer to it are transformed at the same time. The in-plane control point vector m_Vect contains the area coordinates (4/9, 2/9, 1/9, 2/9), (2 /
9, 4/9, 2/9, 1/9), (1/9, 2/9, 4/9, 2/9), and (
2/9, 1/9, 2/9, 4/9) The vector which controls the unevenness of the square surface is stored. Although there are differences in the numbers, they work the same as the triangular surface described above. These are set to 0 vector by default. (In the case of a small turtle figure that rides on the parent turtle figure, the initial value is calculated so that it rides.) The area coordinates (α, β, γ, δ) of the square surface are, in fact, two-dimensional because the surface is essentially two-dimensional. It can be calculated from two parameters (u, v), so let's assume that these relationships are defined by the following equation.

【0066】[0066]

【数21】 [Equation 21]

【0067】前述した4つの面内制御点の面積座標系に
おける位置を次の記号で現して、 P0: ( 4/9, 2/9, 1/9, 2/9 ) P1: ( 2/9, 4/9, 2/9, 1/9 ) P2: ( 1/9, 2/9, 4/9, 2/9 ) P3: ( 2/9, 1/9, 2/9, 4/9 ) 図16は、四角面の面内制御点を示す説明図である。通
常の(U,V)座標系上でみると各々図16のような位置
に対応する。図17は、四角面の面内制御点を示す説明
図(2)である。四角面の面積座標(α,β,γ,δ)は、
通常の(U,V)座標系との対比で考えると、図17のよう
に単位正方形を座標(u,v)で矩形に4分割するとき、そ
れら分割された矩形の面積になっている。これを別の見
方で解釈するため、図17下段のように分けられる四つ
の三角形に分割してみる。こうして見た時、例えば(α,
β)の組について考えると、簡単な面積計算から次の関
係が成立していることが判る。
The positions of the above-mentioned four in-plane control points in the area coordinate system are represented by the following symbols: P0: (4/9, 2/9, 1/9, 2/9) P1: (2/9 , 4/9, 2/9, 1/9) P2: (1/9, 2/9, 4/9, 2/9) P3: (2/9, 1/9, 2/9, 4/9 ) FIG. 16 is an explanatory diagram showing in-plane control points of a square surface. When viewed on a normal (U, V) coordinate system, each corresponds to a position as shown in FIG. FIG. 17 is an explanatory diagram (2) showing in-plane control points of a square surface. The area coordinates (α, β, γ, δ) of the square surface are
Considering the comparison with a normal (U, V) coordinate system, when a unit square is divided into four rectangles with coordinates (u, v) as shown in FIG. 17, the area of the divided rectangles is obtained. In order to interpret this from another point of view, divide it into four triangles as shown in the lower part of FIG. When viewed in this way, for example (α,
Considering the set of β), it can be seen from the simple area calculation that the following relation holds.

【0068】[0068]

【数22】 [Equation 22]

【0069】ここでSabは△APBの面積である。同様
に他の三組についても同様の関係が導かれる。
Here, Sab is the area of ΔAPB. Similarly, the same relationship is derived for the other three sets.

【0070】[0070]

【数23】 [Equation 23]

【0071】この関係から例えば、Sabが0の場合、From this relationship, for example, when Sab is 0,

【数24】 [Equation 24]

【0072】となるが、この場合Pが辺AB上にあるの
で、同時に辺ABの線分座標になっていることを示して
いる。他の組についても同様である。つまり、面の面積
座標から境界線の線分座標が自然に導かれることがわか
る。このことは前述した三角面の場合同様、次項に示し
た面の写像式からも直接確かめることが出来る。同様
に、前述した三角面についても次の関係が成り立ってい
ることが確かめられ、面積座標から境界線についての線
分座標が自然に導かれる。
However, in this case, since P is on the side AB, it indicates that the line segment coordinates of the side AB are simultaneously obtained. The same applies to the other groups. That is, it can be seen that the line segment coordinates of the boundary line are naturally derived from the surface area coordinates. This can be directly confirmed from the surface mapping formula shown in the next section, as in the case of the triangular surface described above. Similarly, it is confirmed that the following relation holds for the above-mentioned triangular surface, and the line segment coordinates about the boundary line are naturally derived from the area coordinates.

【0073】[0073]

【数25】 [Equation 25]

【0074】四角面の面積座標(α,β,γ,δ)から三次
元空間座標P(α,β,γ,δ)への写像は、前述の三角面と
同様(α,β,γ,δ)について対称な数26の総三次式に
より計算する。
The mapping from the area coordinates (α, β, γ, δ) of the quadrangular surface to the three-dimensional space coordinates P (α, β, γ, δ) is the same as the above-mentioned triangular surface (α, β, γ, δ) is calculated by the total cubic equation of Eq.

【0075】[0075]

【数26】 [Equation 26]

【0076】この式の中での係数ベクトルC[0]〜C[15]
は、次に示したように頂点座標および境界線制御ベクト
ルと面内制御点ベクトルを組み合わせたもので表現され
る。
Coefficient vectors C [0] to C [15] in this equation
Is represented by a combination of vertex coordinates and boundary line control vectors and in-plane control point vectors as shown below.

【0077】[0077]

【数27】 [Equation 27]

【0078】ここでDot[k]は頂点kの座標である。 ・Dot[k] = m_pDot[k]→m_Xyz また、同様にLine[k]. Vect[0]およびLine[k]. Vect[1]
は境界線分kの制御ベクトルである。 ・Line[k]. Vect[0] = m_p Line [k]→m_Vect[0] ・Line[k]. Vect[1] = m_p Line [k]→m_Vect[1] 四角面の面内制御点ベクトルm_ Vectは、前述した三角
面の場合と同様に、面積座標( 4/9, 2/9, 1/9, 2/9 )、
( 2/9, 4/9, 2/9, 1/9 )、( 1/9, 2/9, 4/9, 2/9 )およ
び( 2/9, 1/9, 2/9, 4/9 )に対応した3次元空間上の点
の座標から次のように計算できる。
Here, Dot [k] is the coordinate of the vertex k.・ Dot [k] = m_pDot [k] → m_Xyz Similarly, Line [k]. Vect [0] and Line [k]. Vect [1]
Is the control vector of the boundary segment k.・ Line [k]. Vect [0] = m_p Line [k] → m_Vect [0] ・ Line [k]. Vect [1] = m_p Line [k] → m_Vect [1] Square in-plane control point vector m_Vect is the area coordinates (4/9, 2/9, 1/9, 2/9), as in the case of the triangular surface described above.
(2/9, 4/9, 2/9, 1/9), (1/9, 2/9, 4/9, 2/9) and (2/9, 1/9, 2/9, 4 / 9) can be calculated as follows from the coordinates of the point in the three-dimensional space corresponding to.

【0079】[0079]

【数28】 [Equation 28]

【0080】ここでP0、P1、P2およびP3は、四
角面の写像式と次のような対応になっている。
Here, P0, P1, P2 and P3 correspond to the mapping formulas of the quadrangular surface as follows.

【0081】[0081]

【数29】 [Equation 29]

【0082】これに四角面の写像式を当てはめて面内制
御ベクトルについて解くと、上記の面内制御ベクトルの
計算式が得られる。この計算は四角面を別の面の小亀図
形とする場合にも利用される。つまり、親亀図形上での
この四角面の4つの面内制御点の面積座標を求めて、親
亀面の写像式を用いてそれら面内制御点の三次元座標を
計算し、得られた三次元座標値を上記のP0〜P3に当
てはめれば親亀図形に張り付いた四角面が得られる。
If a mapping formula for a quadrangular surface is applied to this to solve for the in-plane control vector, the above-mentioned calculation formula for the in-plane control vector is obtained. This calculation is also used when making a square surface a Kogame figure of another surface. That is, the area coordinates of the four in-plane control points of this square surface on the parent turtle figure were obtained, and the three-dimensional coordinates of these in-plane control points were calculated using the mapping equation of the parent turtle plane. If the three-dimensional coordinate values are applied to the above P0 to P3, a square surface attached to the parent turtle figure can be obtained.

【0083】[親亀に乗っかる四角面の生成]図18
は、子図形の四角面を示す説明図である。先ず、四角面
の4つの頂点が親亀図形の小亀図形として作成されてい
る必要がある。この時、それぞれの頂点の親亀図形パラ
メータ(A、B)、つまりフィールドm_Abの値がつぎのと
おり予め定められているものとして以下の説明を行う。 V0:(A0,B0) V1:(A1,B1) V2:(A2,B2) V3:(A3,B3) 図19は、子図形の四角面の内部制御点を示す説明図で
ある。先ず、親図形の面積座標系での子面の各面内制御
点の座標を求め無ければならない。これを説明するため
親の面積座標形状でも対応する点と同じ記号を用いて説
明する。(同じ記号であるが親の面積座標系での二次元
の点である。)ここでV0〜V3およびP0〜P3を二次元の位
置ベクトルと考えると,次の二次元ベクトル式が導かれ
る。
[Generation of a square plane riding on a parent turtle] FIG.
FIG. 6 is an explanatory diagram showing a square surface of a child figure. First, it is necessary that the four vertices of the square surface be created as the small turtle figure of the parent turtle figure. At this time, the following description will be made assuming that the parent turtle graphic parameters (A, B) of each vertex, that is, the value of the field m_Ab is predetermined as follows. V0: (A0, B0) V1: (A1, B1) V2: (A2, B2) V3: (A3, B3) FIG. 19 is an explanatory diagram showing internal control points on the square surface of the child figure. First, the coordinates of each in-plane control point of the child plane in the area coordinate system of the parent figure must be obtained. In order to explain this, the same symbols as the corresponding points will be used in the parent area coordinate shape. (The same symbol is a two-dimensional point in the area coordinate system of the parent.) Considering V0 to V3 and P0 to P3 as two-dimensional position vectors, the following two-dimensional vector formula is derived.

【0084】[0084]

【数30】 [Equation 30]

【0085】なお、親亀図形パラメータ(A、B)の設定
方法は、図9のとおりである。このベクトル式に子面の
4頂点V0〜V3の親亀図形パラメータを座標値として与え
てやれば、子面の面内制御点P0〜P3の親面積座標系での
座標値がえられる。なお、面内制御点の面積座標値計算
のベクトル式自体は、親亀図形となる面が三角面でも四
角面でも同一である。以上の様にして、子面(小亀)の
面内制御点各々の親亀面での面積座標が得られたとする
と、次はこの面積座標を使用して、それを親面の写像式
を用いて面内制御点の3次元座標を得る。このようにし
て結局のところ子面となる四角面の4つの面内制御点の
3次元座標値が得られるので、先に述べた面内制御点ベ
クトル計算式を用いて、親面に張り付いた四角面を得る
ことが出来る。Bezier四角パッチ表現との関係を以下調
べて見ることとする。Bezier四角パッチは1変数m次ベ
ルンシュタイン関数と1変数n次ベルンシュタイン関数
のテンソル積形式で表現されるもので数31のとおりで
ある。
The method of setting the parent turtle graphic parameters (A, B) is as shown in FIG. If the parent turtle figure parameters of the four vertices V0 to V3 of the child surface are given as coordinate values to this vector expression, the coordinate values of the in-plane control points P0 to P3 of the child surface in the parent area coordinate system can be obtained. The vector formula itself for calculating the area coordinate value of the in-plane control point is the same whether the surface to be the parent-game figure is a triangular surface or a square surface. As described above, assuming that the area coordinates on the parent plane of each in-plane control point of the child plane (Kogame) are obtained, the next step is to use this area coordinate and use the mapping formula of the parent plane. To obtain the three-dimensional coordinates of the in-plane control point. In this way, the three-dimensional coordinate values of the four in-plane control points of the quadrangular surface, which is the child plane in the end, are obtained, so that the in-plane control point vector calculation formula described above is used to stick to the parent plane. You can get a square surface. The relationship with the Bezier square patch expression will be examined and viewed below. The Bezier square patch is expressed in a tensor product form of a 1-variable m-order Bernstein function and a 1-variable n-order Bernstein function, and is as shown in Formula 31.

【0086】[0086]

【数31】 [Equation 31]

【0087】ここでB(u)およびB(v)は次の式で与えら
れるそれぞれ変数u,vのベルンシュタイン関数であ
る。
Here, B (u) and B (v) are Bernstein functions of variables u and v given by the following equations, respectively.

【0088】[0088]

【数32】 [Equation 32]

【0089】また、PijはBezie四角パッチの制御点
で、その個数は(m+1)(n+1)である。なお、数32の第三
式によりBezie四角パッチはこれら制御点の凸結合にな
っている。ここで本発明のCAD表現と比較するため以
下のような置き換えを行う。
Pij is the control point of the Bezie square patch, and the number thereof is (m + 1) (n + 1). Note that the Bezie square patch is a convex combination of these control points according to the third expression of Expression 32. Here, the following replacement is performed for comparison with the CAD expression of the present invention.

【0090】[0090]

【数33】 [Expression 33]

【0091】ここでm=n=3としてパッチ表現を書き
直してみると次のようになる。
Rewriting the patch expression with m = n = 3 gives the following.

【0092】[0092]

【数34】 [Equation 34]

【0093】これを具体的に展開してみると、When this is specifically developed,

【数35】 [Equation 35]

【0094】となる。これに先程の置き換えを実行する
と次式が得られる。
It becomes By executing the replacement described above, the following equation is obtained.

【0095】[0095]

【数36】 [Equation 36]

【0096】これにより本発明のCADの四角パッチ表
現と次の関係が有ることが判る。
From this, it can be seen that the CAD square patch expression of the present invention has the following relationship.

【0097】[0097]

【数37】 [Equation 37]

【0098】従って、次のような関係が導き出される。Therefore, the following relationship is derived.

【0099】[0099]

【数38】 [Equation 38]

【0100】<<本発明のCADの主要機能の詳細な説
明>> <<1.点の作成>> <1.1.親亀図形に束縛された点の作成>作成済みの
線分(曲線)もしくは面から一つを選択してその上に拘
束される点を作成するフローは前述した図3のとおりで
ある。点作成がメニューにより指示された時点では、3
Dカーソルは現在の座標系の原点(0,0,0)に位置
するように初期化されている。また、この時点ではこの
カーソルには親図形は関連つけされていない。なお、現
在の3Dカーソルの状態は次のように点オブジェクトと
してプログラム中に記憶しておく。 ・CmdlDot* pCursor3D;初期状態ではこのカーソルには
次のように属性が設定されている。 ・pCursor3D→m_pParentCoordinate = 現在の座標系オ
ブジェクトのアドレス ・pCursor3D→m_pParentRelation = Null(親図形無
し) ・pCursor3D→m_Xyz = (0,0,0) 減座標系の原点に初期
化 メニュー選択により点作成モードに移行しても直ぐには
点の座標指定が開始されるのではなく、Tabキーもしく
は’C’キーが押下されるるまで実際は何も行われな
い。これらのキーの何れも押下されていない状態では、
マウスの左クリックにより図形を選択することが出来
る。オペレータによる親図形の選択はこのタイミングで
行う。ただし、その次にTabキーを押下した場合は、親
図形に束縛されない点を作成するので、選択は無視され
てしまうことになる。
<< Detailed Description of Major Functions of CAD of the Present Invention >><< 1. Creating points >>><1.1. Creation of Point Bound to Parent Turtle Figure> The flow of selecting one of the created line segments (curves) or faces and creating a point to be bound on it is as shown in FIG. 3 when the point creation is instructed by the menu
The D cursor is initialized to be located at the origin (0,0,0) of the current coordinate system. Also, at this point, no parent figure is associated with this cursor. The current state of the 3D cursor is stored in the program as a point object as follows.・ CmdlDot * pCursor3D; In the initial state, the following attributes are set for this cursor.・ PCursor3D → m_pParentCoordinate = address of the current coordinate system object ・ pCursor3D → m_pParentRelation = Null (no parent figure) ・ pCursor3D → m_Xyz = (0,0,0) At the origin of the reduced coordinate system, select the point creation mode by selecting the initialization menu Even after the transition, the point coordinate specification is not started immediately, but nothing is actually done until the Tab key or'C 'key is pressed. If none of these keys are pressed,
A figure can be selected by left-clicking the mouse. The operator selects the parent figure at this timing. However, if you press the Tab key next time, a point that is not bound to the parent figure will be created, and the selection will be ignored.

【0101】(1)親図形の選択 マウス左ボタンUpイベントを受けて、全ての図形(線
分および面)を順次調べて、マウス座標(mx,my)が示
す点が、図形の中央点から所定の距離内に入る図形を探
す。もしそのような図形が見つかれば、その図形を選択
図形として図形選択リストに記憶し、その図形が選択中
であることを示す表示に変更する。 [追加説明] 1.線分および面の中央点の3次元座標を計算して、そ
れを更にスクリーン座標系に変換した座標とマウス座標
(mx,my)を比較して所定距離内にあるか調べる。所定
距離内に有ればその図形を選択したと判定する。 2.選択された図形の選択状態フィールド(m_wSelectS
tatus)に、その図形全体が選択中であることを示す値
を設定する。選択中の表示はこのフィールドの値を参照
して行われる。
(1) Selection of parent figure In response to the mouse left button Up event, all figures (line segments and planes) are sequentially examined, and the point indicated by the mouse coordinates (mx, my) is from the center point of the figure. Find a figure that fits within a certain distance. If such a figure is found, the figure is stored as a selected figure in the figure selection list, and the display is changed to indicate that the figure is being selected. [Additional explanation] 1. The three-dimensional coordinates of the line segment and the center point of the surface are calculated, and the coordinates converted into the screen coordinate system and the mouse coordinates (mx, my) are compared to check whether they are within a predetermined distance. If it is within the predetermined distance, it is determined that the figure is selected. 2. Selected state field of the selected figure (m_wSelectS
tatus) is set to a value indicating that the entire figure is being selected. The selected display is performed by referring to the value of this field.

【0102】(2)親図形上での点の位置設定 ‘C’キー押下イベントを受け取る(オペレータが’C’
キーを押下する)と、その時点の選択図形リストを調べ
て、最初の線又は面を親図形として記憶して、点の位置
を示すカーソルを親となる図形の中央に位置付ける。な
お、図形選択リストはここでクリアしておく。 ・pCursor3D→m_pParentRelation = 選択図形のアドレ
ス(親亀図形のアドレス) ・pCursor3D→m_Ab = (a,b) 親亀図形パラメータ(a,b)
を親亀図形中央に設定 ・pCursor3D→m_Ab_Ref = (0,0,0) オフセットベクトル
を0ベクトルに初期化 図20は、親亀図形パラメータ(a,b)の設定を示す
説明図である。それ以後は、マウスポインタの移動イベ
ントを受けて、マウス座標の移動に応じて親図形上のパ
ラメータ座標(線分なら曲線座標パラメータ、面なら面
積座標パラメータ)を移動し、移動後のパラメータ座標
を用いてカーソルの3次元座標を計算してスクリーンに
表示する。マウスポインタの移動量による親亀図形パラ
メータ(a,b)の更新は次のとおりである。
(2) Position setting of point on parent figure Receive event of pressing'C 'key (operator'C'
When the key is pressed), the selected figure list at that time is examined, the first line or face is stored as the parent figure, and the cursor indicating the position of the point is positioned at the center of the parent figure. The figure selection list is cleared here.・ PCursor3D → m_pParentRelation = address of selected figure (address of parent turtle figure) ・ pCursor3D → m_Ab = (a, b) parent turtle figure parameter (a, b)
Is set to the center of the parent turtle graphic. • pCursor3D → m_Ab_Ref = (0,0,0) The offset vector is initialized to 0 vector. FIG. 20 is an explanatory diagram showing the setting of the parent turtle graphic parameter (a, b). After that, in response to the movement event of the mouse pointer, the parameter coordinates (curve coordinate parameter for line segment, area coordinate parameter for surface) are moved according to the movement of the mouse coordinate, and the parameter coordinate after movement is set. Use it to calculate the 3D coordinates of the cursor and display it on the screen. The update of the parent turtle figure parameters (a, b) according to the movement amount of the mouse pointer is as follows.

【0103】[0103]

【数39】 [Formula 39]

【0104】この変化係数については0.01程度の小
さな値とする。親亀図形パラメータ(a,b)から親亀図形
の線分座標系(α、β)、三角面面積座標(α、β、γ)
もしくは四角面面積座標(α、β、γ、δ)への変換は
図20の表の右端の列のとおりである。
The coefficient of change is a small value of about 0.01. Parent turtle figure parameters (a, b) to parent turtle figure line segment coordinate system (α, β), triangular surface area coordinates (α, β, γ)
Alternatively, the conversion into the square surface area coordinates (α, β, γ, δ) is as shown in the rightmost column of the table of FIG.

【0105】(3)点データの生成 マウスポインタの右ボタンUpイベントを受け取ると、
その時点の3Dカーソルの位置を座標値とする点データ
を生成する。 ・CmdlDot* pNewDot = new CmdlDot ; 点オブジェクト
を生成 点ローカル座標系の設定(親亀図形のローカル座標系を
複写) ・pNewDot→m_pParentCoordinate = pCursor3D→m_pPar
entRelation→m_pParentCoordinate ; 親亀図形のアドレスを設定 ・pNewDot→ m_pParentRelation= pCursor3D→m_pParen
tRelation ; 親亀図形パラメータ(a,b)の設定 ・pNewDot→ m_ m_Ab =pCursor3D→m_Ab ; オフセットベクトルを設定(親亀図形からのオフセット
ベクトル) ・pNewDot→ m_Ab_Ref = pCursor3D→m_Ab_Ref
(3) Generation of point data When the right button Up event of the mouse pointer is received,
Point data having the coordinate value of the position of the 3D cursor at that time is generated.・ CmdlDot * pNewDot = new CmdlDot; Create point object Set point local coordinate system (copy local coordinate system of parent turtle shape) ・ pNewDot → m_pParentCoordinate = pCursor3D → m_pPar
entRelation → m_pParentCoordinate; Set address of parent turtle shape ・ pNewDot → m_pParentRelation = pCursor3D → m_pParen
tRelation; Set parent figure parameter (a, b) ・ pNewDot → m_ m_Ab = pCursor3D → m_Ab; Set offset vector (offset vector from parent figure) ・ pNewDot → m_Ab_Ref = pCursor3D → m_Ab_Ref

【0106】<<2.線分(曲線)の作成>> <2.1.既に作成されている点を選んで線分を作成す
る場合>線作成メニュー選択イベントを受け取った(オ
ペレータがメニューを選択した)時点で、もし点オブジ
ェクトが2点選択されている場合は、直ちにその2点を
端点とする線分(直線)を作成し表示して、選択図形リ
ストをクリアする。(それ以外の場合は、Tabキー押下
により線分の作成が開始されるのを待つ。)この時行わ
れる線分の生成は、大きく分けると2種類の場合があ
る。選択された2点が独立した点である(親亀図形を持
たない独立した点)場合と、選択された2点が同じ親亀
図形上に作成された子図形である場合である。 (1)端点が独立した点である場合の線分データの生成 選択された2点を結ぶ直線線分を生成する。 ・CMdlLine* pNewLine = new CmdlLine ; 線分オブジェ
クトを生成する 点ローカル座標系の設定 ・pNewLine →m_pParentCoordinate= pCursor3D→m_pPa
rentCoordinate ; ・pNewLine→m_pDot[0] = 選択された1点目の点オブジ
ェクトのアドレス ・pNewLine→m_pDot[1] = 選択された2点目の点オブジ
ェクトのアドレス ・pNewLine→m_Vect[0] = 1点目から2点目へのベクト
ルの1/3のベクトル ・pNewLine→m_Vect[1] = 2点目から1点目へのベクト
ルの1/3のベクトル (2)端点が同じ親亀図形上に作成された子図形である
場合の線分データの生成 この場合は2端点の親図形に乗っかる線分(曲線)を生
成する。 ・CMdlLine* pNewLine = new CmdlLine ; 線分オブジェ
クトを生成する 点ローカル座標系の設定 ・pNewLine →m_pParentCoordinate= pCursor3D→m_pPa
rentCoordinate ; ・pNewLine→m_pDot[0] = 選択された1点目の点オブジ
ェクトのアドレス ・pNewLine→m_pDot[1] = 選択された2点目の点オブジ
ェクトのアドレス 端点の親亀図形アドレスを線分の親亀図形アドレスにコ
ピー ・pNewLine→m_pParentRelation=pNewLine→m_pDot[0]
→m_pParentRelation ; 親亀図形に線分が乗るように制御ベクトルを計算して設
定 ・pNewLine→m_Vect[0] = 計算により求めた値を設定 ・pNewLine→m_Vect[1] =計算により求めた値を設定 曲線を親図形上に乗せる為には、次の計算式により曲線
の制御ベクトル(m_Vect[0],m_Vect[1])を計算により
求める。
<< 2. Creation of line segment (curve) >><2.1. When selecting a point that has already been created and creating a line segment> If two point objects are selected when the line creation menu selection event is received (the operator selects the menu), immediately Create and display a line segment (straight line) with two points as end points, and clear the selected figure list. (In other cases, wait until the creation of the line segment is started by pressing the Tab key.) The line segment generation performed at this time can be roughly divided into two types. There are a case where the selected two points are independent points (an independent point having no parent turtle figure) and a case where the selected two points are child figures created on the same parent turtle figure. (1) Generation of line segment data when end points are independent points A straight line segment connecting two selected points is generated.・ CMdlLine * pNewLine = new CmdlLine; Setting the point local coordinate system that generates the line segment object ・ pNewLine → m_pParentCoordinate = pCursor3D → m_pPa
rentCoordinate; ・ pNewLine → m_pDot [0] = Address of the selected first point object ・ pNewLine → m_pDot [1] = Address of the selected second point object ・ pNewLine → m_Vect [0] = 1 point Vector of 1/3 of vector from eye to second point ・ pNewLine → m_Vect [1] = Vector of 1/3 of vector from 2nd point to 1st point (2) Created on parent turtle figure with the same end point Generation of line segment data in the case of a child graphic that has been created In this case, a line segment (curve) that rides on the parent graphic of the two end points is generated.・ CMdlLine * pNewLine = new CmdlLine; Setting the point local coordinate system that generates the line segment object ・ pNewLine → m_pParentCoordinate = pCursor3D → m_pPa
rentCoordinate; ・ pNewLine → m_pDot [0] = Address of the first point object selected ・ pNewLine → m_pDot [1] = Address of the second point object selected The line of the parent turtle graphic address of the end point Copy to parent turtle graphic address ・ pNewLine → m_pParentRelation = pNewLine → m_pDot [0]
→ m_pParentRelation; Calculate and set the control vector so that the line segment will be on the parent turtle shape ・ pNewLine → m_Vect [0] = Set the calculated value ・ pNewLine → m_Vect [1] = Set the calculated value In order to put the curve on the parent figure, the control vector (m_Vect [0], m_Vect [1]) of the curve is calculated by the following formula.

【0107】[0107]

【数40】 [Formula 40]

【0108】この計算式では、点P1の線分座標を(2/
3, 1/3)、つまりβ=1/3とし、点P2の面積座標を
(1/3, 2 /3)、つまりβ=2/3として、先ず親図形上
に2点P1とP2を乗せた後、子の曲線がこれら2点P1
およびP2を通るとして、線分の写像式を制御ベクトル
(m_Vect[0], m_Vect[1])について解くと導かれる。図
21は、子図形の線分の制御点を示す説明図である。計
算式に現れる中間点P1とP2は親図形上の点である
が、それは以下のようにして求められる。先ず、親亀図
形が三角面か四角面の面図形の場合について述べる。親
図形の面積座標系上で端点Dot[0]とDot[1]の位置をそれ
ぞれPaおよびPbとしてそれぞれの面積座標を(αa,βa,
γa,…)および(αb,βb,γb,…)とする。図22は、子
図形の線分の制御点を示す説明図(2)である。また、
P1およびP2の親図形の面積座標系上での面積座標を(α
1,β1,γ1,…)および(α2,β2,γ2,…)とすると、次式
によりこれらの値を計算することが出来る。
In this calculation formula, the line segment coordinates of the point P1 are (2 /
3, 1/3), that is, β = 1/3, and the area coordinates of the point P2 are
(1/3, 2/3), that is, β = 2/3, first put two points P1 and P2 on the parent figure, and then the child curve draws these two points P1.
And P2, the mapping equation of the line segment is solved for the control vector (m_Vect [0], m_Vect [1]). FIG. 21 is an explanatory diagram showing the control points of the line segment of the child figure. The intermediate points P1 and P2 appearing in the calculation formula are points on the parent figure, which are obtained as follows. First, the case where the parent turtle figure is a triangular or quadrangular surface figure will be described. On the area coordinate system of the parent figure, the positions of the end points Dot [0] and Dot [1] are Pa and Pb, respectively, and the area coordinates are (αa, βa,
..) and (.alpha.b, .beta.b, .gamma.b, ...). FIG. 22 is an explanatory diagram (2) showing the control points of the line segment of the child figure. Also,
The area coordinates of the parent figure of P1 and P2 on the area coordinate system are (α
1, β1, γ1, ...) and (α2, β2, γ2, ...), these values can be calculated by the following equation.

【0109】[0109]

【数41】 [Formula 41]

【0110】ここで得られた面積座標を用いてP1(α1,
β1,γ1,…)およびP2(α2,β2,γ2,…)を計算して先ほ
どの制御ベクトル算定式に当てはめる。
Using the area coordinates obtained here, P1 (α1,
β1, γ1, ...) and P2 (α2, β2, γ2, ...) are calculated and applied to the above control vector calculation formula.

【0111】<<3.面の作成>> <3.1.作成されている線分を境界とする面を作成す
る場合>三角面の場合も四角面の場合も線分を境界とす
る面として構成できるので、既に作成された線分から境
界となる線分を選択して、それらの線分で囲まれた面と
して新たに面を生成することができる。処理の流れとし
ては前述した「2.1.既に作成されている点を選んで
線分を作成する場合」と同じになる。線分作成の場合と
同様に面作成メニューが選択された時点で、面の境界線
分が選択されている場合は、直ちに面の作成処理を開始
する。この時点で線分の本数が何本であるか、およびそ
れらが互いに繋がった閉じた線分であるかがチェックさ
れる。そして、選択された線分が3本であれば3角面、
4本なら4角面を生成する。前述2.1の線分の場合と
同様、選択された境界線分が全て同じ親を持つ子図形の
場合は、面も同じ親図形に乗っかる子図形として生成す
る。親に乗る面の生成における面内制御点ベクトルの計
算は、三角面の場合は段落番号[0052]〜[005
4]、四角面の場合は[0083]〜[0085]に示
したとおりである。
<< 3. Creation of surface >>><3.1. When creating a surface with the created line segment as the boundary> It can be configured as a surface with the line segment as the boundary regardless of whether it is a triangular surface or a quadrangular surface. It is possible to select and newly generate a surface as a surface surrounded by those line segments. The process flow is the same as the above-mentioned “2.1. Creating a line segment by selecting already created points”. As in the case of line segment creation, when the surface creation menu is selected and the boundary line segment of the surface is selected, the surface creation process is immediately started. At this point, the number of line segments and the number of closed line segments connected to each other are checked. If there are three selected line segments, a triangular surface,
If there are four, a quadrangular surface is generated. As in the case of the line segment described in 2.1 above, when the selected boundary line segments are all child figures having the same parent, the faces are also generated as child figures that ride on the same parent figure. In the calculation of the in-plane control point vector in the generation of the plane to ride on the parent, paragraph numbers [0052] to [005
4] and the case of a square surface are as shown in [0083] to [0085].

【0112】<<図形作成例>> <作成例フローチャート>以下1.〜4.に作成例の大
まかな処理手順を示す。 1.面頂点となる点の作成(親を持たない独立点) (1)点作成メニューを選択して点作成モードに入る。カ
ーソルはこの時点のマウス座標からの現在の3次元モデ
ル座標系に変換された値に初期化される。 (2)マウスカーソルを動かして左クリック。マウス座標
をスクリーン座標から3次元座標に変換し、点オブジェ
クトを生成して上記の座標値を代入する。 (3)ESCキーもしくは他の操作メニュー選択などイベ
ントが発生するまで(2)を繰り返す(実施例では9点を
作成している)。
<< Graphic Creation Example >><Flowchart of Creation Example> 1. ~ 4. Shows the rough processing procedure of the creation example. 1. Creating points that become surface vertices (independent points that do not have parents) (1) Select the point creation menu to enter the point creation mode. The cursor is initialized to the value converted from the mouse coordinates at this point into the current three-dimensional model coordinate system. (2) Move the mouse cursor and left-click. The mouse coordinates are converted from screen coordinates into three-dimensional coordinates, a point object is generated, and the above coordinate values are substituted. (3) Repeat (2) until an event occurs such as selection of ESC key or other operation menu (9 points are created in the embodiment).

【0113】2.作成された点群から面の境界となる4
点を選択しつつ四角面を作成 (1)四角面作成メニューを選択して四角面作成モードに
入る。カーソルはこの時点のマウス座標からの現在の3
次元モデル座標系に変換された値に初期化される。 (2)既存の点から作成するためESCキーで選択可能状
態に以降する。 (3)作成する面の頂点となる4点をマウスカーソルで選
択する。(複数選択のためCntlキーを同時に押下し
ておく)マウスの左クリックによりスクリーン座標上で
の座標で近傍となる図形を検索して、もし有ればこれを
図形選択リストに追加しておく。 (4)4点を選択した状態で’M’キーを押下する。プログ
ラムでは4点が選択されていなければ無視する。条件を
満たせば次に進む。 (5)四角面の生成 ・選択された点を選択順に結ぶ直線を4本生成。2点を
結ぶ線分が既に作成済み場合はこれを共有するものとし
て作成しない。 ・生成された線分を境界とする四角面を生成。面内制御
ベクトルおよびバイアスベクトルはすべて0ベクトルに
設定。頂点アドレスは選択された点を指すように設定。
境界線分アドレスは、作成又は共有された線分の指すよ
うに設定。 (6)ESCキーもしくは他の操作メニュー選択などイベ
ントが発生するまで(3)から繰り返す(実施例では6面
を作成している)。
2. It becomes the boundary of the surface from the created point cloud 4
Create a quadrilateral while selecting points (1) Select the quadrilateral creation menu to enter the quadrilateral creation mode. The cursor is the current 3 from the mouse coordinate at this point.
Initialized to the value converted to the dimensional model coordinate system. (2) Since it is created from an existing point, it is made selectable with the ESC key. (3) Select the four points that are the vertices of the surface to be created with the mouse cursor. (Hold down the Cntl key simultaneously for multiple selections) Left-click the mouse to search for a graphic in the vicinity at the coordinates on the screen, and add it to the graphic selection list, if any. (4) Press'M 'key with 4 points selected. Ignore if 4 points are not selected in the program. If the conditions are met, proceed to the next. (5) Generation of quadrangular surface ・ Generate four straight lines connecting selected points in the order of selection. If a line segment connecting two points has already been created, it will not be created as shared. -Generates a quadrangular surface with the generated line segment as a boundary. In-plane control vector and bias vector are all set to 0 vector. The vertex address is set to point to the selected point.
The boundary line segment address is set to point to the line segment that was created or shared. (6) Repeat from (3) until an event such as ESC key or other operation menu selection occurs (six sides are created in the embodiment).

【0114】3.左上の面(面3と呼ぶことにする)上
に子図形として点を8点作成 (1)点作成開始のメニューを選択して点作成モードに入
る。カーソルはこの時点のマウス座標からの現在の3次
元モデル座標系に変換された値に初期化される。 (2)親面の選択を行うために図形選択可能状態に移行。
ESCキーで一時中断して、図形選択可能状態に移行し
ておく。 (3)マウスカーソル面3の中央付近に異動して左クリッ
クする。このイベントにより面3が選択図形リストに格
納される。 (4)子図形作成メニューを選択して子図形作成モードに
移行。プログラムでは、選択された図形の中央にカーソ
ルを初期化する。四角面が親のとき、(α,β,γ,δ)=(1
/4,1/4,1/4,1/4)として、面の写像式を用いて三次元座
標に変換して、そこにカーソルを表示する。三角面が親
のとき、(α,β,γ)=(1/3,1/3,1/3)とする。同時に親図
形の面積座標記憶変数にこの値を記憶しておく。 (5)マウスカーソルの異動イベントを検出しながら、マ
ウス移動量により親面上の面積座標(面積座標記憶変
数)を更新しながら、面写像式により3次元座標に変換
してカーソル表示位置を更新する。 (6)左クリックイベントを検出したら、その時点の親面
上の面積座標(面積座標記憶変数)値を用いて点を生成
する。 点の生成 親亀図形パラメータ<――親面上の面積座標(面積座標
記憶変数) オフセットベクトル<――(0,0,0)を設定 親亀図形<――選択された親面を指すアドレス (7)ESCキーもしくは他の操作メニュー選択などイベ
ントが発生するまで(5)から処理を繰り返す(実施例で
は8点を作成している)。
3. Create 8 points as child figures on the upper left surface (to be referred to as surface 3) (1) Select the menu for starting point creation to enter the point creation mode. The cursor is initialized to the value converted from the mouse coordinates at this point into the current three-dimensional model coordinate system. (2) Move to the figure selectable state to select the master surface.
The ESC key is used to temporarily suspend and shift to the figure selectable state. (3) Move to the center of mouse cursor surface 3 and left-click. This event causes surface 3 to be stored in the selected figure list. (4) Select the child figure creation menu to switch to the child figure creation mode. The program initializes the cursor in the center of the selected shape. When the square is the parent, (α, β, γ, δ) = (1
/ 4,1 / 4,1 / 4,1 / 4) is converted into three-dimensional coordinates using the surface mapping formula, and the cursor is displayed there. When the triangular surface is the parent, (α, β, γ) = (1 / 3,1 / 3,1 / 3). At the same time, this value is stored in the area coordinate storage variable of the parent figure. (5) While detecting the movement event of the mouse cursor, updating the area coordinates (area coordinate storage variable) on the master surface by the amount of mouse movement, and converting to the three-dimensional coordinates by the surface mapping formula and updating the cursor display position. To do. (6) When a left click event is detected, a point is generated using the area coordinate (area coordinate storage variable) value on the parent surface at that time. Point generation Parent turtle figure parameter <-Area coordinate on parent plane (area coordinate storage variable) Set offset vector <-(0,0,0) Parent turtle figure <-Address pointing to selected parent plane (7) The process is repeated from (5) until an event such as the ESC key or other operation menu selection occurs (eight points are created in the embodiment).

【0115】4.親面(面3)の子図形としての子面作
成 前述3で作成した8点から5つの子面を作成する。(手
順は2と全く同じである。) (1)四角面作成開始のメニューを選択して四角面作成モ
ードに入る。カーソルはこの時点のマウス座標からの現
在の3次元モデル座標系に変換された値に初期化され
る。 (2)既存の点から作成するためESCキーで選択可能状
態に以降する。 (3)作成する面の頂点となる4点をマウスカーソルで選
択する。(複数選択のためCntlキーを同時に押下し
ておく)マウスの左クリックによりスクリーン座標上で
の座標で近傍となる図形を検索して、もし有ればこれを
図形選択リストに追加しておく。 (4)4点を選択した状態で所定のキーを押下する。プロ
グラムでは4点が選択されていなければ無視する。条件
を満たせば次に進む。 (5)四角面の生成 ・選択された点を選択順に結ぶ線分を4本生成 2点を結ぶ線分が既に作成済み場合はこれを共有するも
のとして作成しない。この場合は、2点とも共通の親図
形上にあるため親図形に載るように線分の制御ベクトル
を計算する。端点アドレスに選択された2点を指すポイ
ンタを設定。制御ベクトルは親面に乗るように計算され
たベクトル値を設定。制御ベクトルバイアスは0ベクト
ル(0,0,0)に設定。親図形アドレスに点と同じ親図形を
指すポインタを設定。2点の参照カウントを各々1イン
クリメントする。 ・生成された線分を境界とする四角面を生成 作成する四角面の面内制御ベクトルは、頂点および境界
線の親図形に乗るように計算して設定し、バイアスベク
トルはすべて0ベクトルに設定。頂点アドレスに選択さ
れた4点を指すポインタを設定。境界線分アドレスは、
作成又は共有された4線分を指すポインタを設定。親図
形アドレスに点と同じ親図形を指すポインタを設定。四
本の面境界線分の参照カウントを各々1インクリメント
する。 (6)ESCキーもしくは他の操作メニュー選択などイベ
ントが発生するまで(3)から繰り返す。(実施例では8
点から5面を作成している)。
4. Creating a Child Face as a Child Graphic of the Parent Face (Face 3) Five child faces are created from the 8 points created in 3 above. (Procedure is exactly the same as 2). (1) Select the menu to start creating a square surface and enter the square creation mode. The cursor is initialized to the value converted from the mouse coordinates at this point into the current three-dimensional model coordinate system. (2) Since it is created from an existing point, it is made selectable with the ESC key. (3) Select the four points that are the vertices of the surface to be created with the mouse cursor. (Hold down the Cntl key simultaneously for multiple selections) Left-click the mouse to search for a graphic in the vicinity at the coordinates on the screen, and add it to the graphic selection list, if any. (4) Press the specified key with four points selected. Ignore if 4 points are not selected in the program. If the conditions are met, proceed to the next. (5) Generation of a square surface-Generation of four line segments that connect selected points in the order of selection If a line segment that connects two points has already been created, do not create it as shared. In this case, since the two points are on the common parent figure, the control vector of the line segment is calculated so as to be on the parent figure. Set the pointers to the selected 2 points at the end point address. For the control vector, set the vector value calculated to ride on the master surface. The control vector bias is set to 0 vector (0,0,0). Set a pointer to the parent figure address that points to the same parent figure as the point. The reference counts of 2 points are each incremented by 1. -Generate a quadrangular surface with the generated line segment as a boundary. The in-plane control vector of the quadrangular surface is calculated and set so as to ride on the parent figure of the vertex and the boundary line, and the bias vector is set to all 0 vectors. . Set a pointer to the selected 4 points at the vertex address. The boundary line address is
Set a pointer to the created or shared 4 line segment. Set a pointer to the parent figure address that points to the same parent figure as the point. The reference counts of the four surface boundary line segments are each incremented by one. (6) Repeat from (3) until an event occurs such as ESC key or other operation menu selection. (8 in the embodiment
5 faces are created from points).

【0116】以下、作成例の詳細について説明する。 (1)ベースとなる面の面頂点となる点の作成 実施例では図23のようにZ=0の位置に点を9点作成
する。(これらの点は親を持たない独立点である。) 点を作成するためには、先ずメニューで点作成を開始す
ることを指示する必要がある。メニューが選択される
と、図24のように現在の座標系の原点に3Dカーソル
が位置付けられる。このカーソルはマウスポインタの移
動に応じて3次元空間上を移動していく。3Dカーソル
の位置は、3Dカーソル情報保持用の変数に保存されて
いる。また、3Dカーソルの表示はこの変数の最新情報
を元に行われる。後で述べるようにこの3Dカーソルは
子図形としての点を生成するためにも使用される。 ・CMdlDot pt3DCursor ; 現在の3次元カーソル位置保
存用変数。この変数は点作成メニューが選択されると次
のような初期化が行われる。 座標を(0,0,0)に初期化 ・pt3DCursor.m_Xyz.x = 0 ; ・pt3DCursor. m_Xyz.y = 0 ; ・pt3DCursor. m_Xyz.z = 0 ; 親図形情報をクリア ・pt3DCursor.m_pParentRelation = Null ; 親亀図形
を指すポインタ ・pt3DCursor.m_Ab.x = 0; pt3DCursor.m_Ab.x = 0;親
亀図形座標パラメータ ・pt3DCursor.m_Ab_Ref.x = 0 ; 親からのオフセット
ベクトル ・pt3DCursor.m_Ab_Ref.y = 0 ; ・pt3DCursor.m_Ab_Ref.z = 0 ; このカーソル情報は常時メンテされており、マウス左ボ
タンダウン(押下)イベントを受け取ったとき点生成時
の必要な情報をコピーするために使用する。マウス左ボ
タンダウン(押下)イベントを受け取って点を生成する
処理は、コーディングレベルで見ると、後に(3)で述
べる子図形としての点生成とまったく同じになる。な
お、実施例ではワールド座標系に図形を作成しているた
め全ての図形が同じ座標系にあるが、もし複数の座標
系、つまり複数のパーツでモデルが作成される場合は、
カレントの座標系は3Dカーソルのpt3DCursor. m_pPar
entCoordinateにその座標系を示すポインタが切り替え
るたびに設定される。初期値はワールド座標系に設定さ
れている。
The details of the creation example will be described below. (1) Creation of points that become the surface vertices of the base surface In the embodiment, nine points are created at the position of Z = 0 as shown in FIG. (These points are independent points that do not have parents.) In order to create points, it is necessary to first instruct the menu to start point creation. When the menu is selected, the 3D cursor is positioned at the origin of the current coordinate system as shown in FIG. This cursor moves in the three-dimensional space according to the movement of the mouse pointer. The position of the 3D cursor is stored in a variable for holding 3D cursor information. The display of the 3D cursor is performed based on the latest information of this variable. As will be described later, this 3D cursor is also used to generate a point as a child figure.・ CMdlDot pt3DCursor; Variable for saving the current 3D cursor position. This variable is initialized as follows when the point creation menu is selected. Initialize coordinates to (0,0,0) ・ pt3DCursor.m_Xyz.x = 0; ・ pt3DCursor.m_Xyz.y = 0; ・ pt3DCursor.m_Xyz.z = 0; Clear parent figure information ・ pt3DCursor.m_pParentRelation = Null ; Pointer pointing to parent turtle shape ・ pt3DCursor.m_Ab.x = 0; pt3DCursor.m_Ab.x = 0; Parent turtle coordinate parameters ・ pt3DCursor.m_Ab_Ref.x = 0; Offset vector from parent ・ pt3DCursor.m_Ab_Ref.y = 0; -pt3DCursor.m_Ab_Ref.z = 0; This cursor information is always maintained and is used to copy the necessary information at the point generation when the mouse left button down (press) event is received. The process of receiving a mouse left button down (press) event and generating a point is exactly the same as the point generation as a child figure described later in (3) at the coding level. In the example, since the figures are created in the world coordinate system, all the figures are in the same coordinate system, but if the model is created in multiple coordinate systems, that is, in multiple parts,
The current coordinate system is pt3DCursor.m_pPar of 3D cursor.
It is set every time the pointer indicating the coordinate system is switched to entCoordinate. The initial value is set to the world coordinate system.

【0117】(2)作成された点群から面の境界となる
4点を選択しつつ四角面を作成 前述の9点から先ず左上の4点を順次版時計回り、もし
くは反時計回りに選んで一つの四角面を作成する。図2
5は面の頂点選択を示す説明図である。選択された図形
は図形選択リストに保持され後の面生成時に参照され
る。所定キー押下イベントを受け取ったら、選択図形リ
ストを調べて、選択されている図形が4つの点であるこ
とをチェック。OKならそれら4点を順次結ぶ直線を生
成する。ただし、線を生成するべき2点を結ぶ線分が既
に存在した場合を、新規に作成せずこれを共有する。
(図26の場合はそのような線分は存在していない場
合) なお、面を生成するより以前に四角面作成モードにする
ため四角面作成メニューが選択されたことが前提であ
る。(点の選択時は必ずしも四角面作成モードである必
要は無い) 同様にして、左下,右下および右上のそれぞれ4点ずつ
の組について同じ事を繰り返す。今場合は、線分の共有
が面の境界で発生する。面作成の終了はESCキーを押
下するか、又は他の図形作成のメニューが選択されたと
きである。
(2) Creating a quadrangular surface while selecting four points that are the boundaries of the surface from the created point group. First, select the four points in the upper left from the above-mentioned nine points in sequence clockwise or counterclockwise. Create one square face. Figure 2
5 is an explanatory diagram showing the selection of vertices of a surface. The selected figure is held in the figure selection list and is referred to when the surface is generated later. When a predetermined key press event is received, the selected figure list is checked to check that the figure selected is four points. If OK, a straight line connecting these four points in sequence is generated. However, when a line segment connecting two points for which a line is to be generated already exists, it is shared without being newly created.
(In the case of FIG. 26, such a line segment does not exist.) It is premised that the square plane creation menu is selected to enter the square plane creation mode before the plane is created. (When selecting a point, it is not necessary to be in the quadrangular surface creation mode.) Similarly, the same thing is repeated for each set of four points at the lower left, lower right and upper right. In this case, line sharing occurs at the boundary of the faces. The surface creation ends when the ESC key is pressed or another graphic creation menu is selected.

【0118】四角面の生成処理は次のとおりである。 ・CMdlDot* pDots[4] ; 選択された4点を保持する配列 ・CMdlLine* pLines[4] ; 面境界線4本を保持する配列 図形選択リストに4点が保持されていることなどチェッ
クし、OKならpDotsに順次リストの要素を取り出して
格納する。選択された4点より閉じた境界線4本を作成
する。ただし、2点間に既に線分が繋がれている場合
は、その線分を再利用する。 ・i=0 から 3 まで下記の処理を繰り返す。 { もし pDots[i].m_nCountが0より大 かつ pDots[(i+
1)%4].m_nCountが0より大なら下記を実行{pLines[i] =
SerchLine(pDots[i], pDots[i+1%4]) ;もし pLines[i]
がnullでなければ続行;即ち、既に作成した線分群から
pDots[i]とpDots[(i+1)%4]を結ぶ線分を検索} pLines[i] = new CMdlLine ; pLines[i]→m_pParentCoordinate = pt3DCursor. m_pPa
rentCoordinate ; pLines[i]→m_pDot[0] = pDots[i] ; 端点ポインタを格
納 pLines[i]→m_pDot[1] = pDots[i+1%4] ; 点の参照カウントをインクリメント pLines[i]→m_pDot[0]→m_nCount++ ; pLines[i]→m_pDot[1]→m_nCount++ ; 直線になるように制御ベクトルを計算して設定 pLines[i]→m_Vect[0]= 計算したベクトル ; pLines[i]→m_Vect[1]= 計算したベクトル ; 制御ベクトルバイアスを0ベクトルに初期化 pLines[i]→ m_Cnt_ref [0].x = 0 ; pLines[i]→ m_Cnt_ref [0].y = 0 ; pLines[i]→ m_Cnt_ref [0].z = 0 ; pLines[i]→ m_Cnt_ref [1].x = 0 ; pLines[i]→ m_Cnt_ref [1].y = 0 ; pLines[i]→ m_Cnt_ref [1].z = 0 ; }
The process of generating a square surface is as follows.・ CMdlDot * pDots [4]; Array holding 4 selected points ・ CMdlLine * pLines [4]; Array holding 4 face boundary lines Check that 4 points are held in the figure selection list, If OK, the elements of the list are sequentially fetched and stored in pDots. Create four closed border lines from the selected four points. However, if a line segment is already connected between two points, that line segment is reused.・ Repeat the following process from i = 0 to 3. {If pDots [i] .m_nCount is greater than 0 and pDots [(i +
1) If% 4] .m_nCount is greater than 0, execute the following {pLines [i] =
SerchLine (pDots [i], pDots [i + 1% 4]); if pLines [i]
If is not null, continue; ie, from the previously created line group
Find the line segment connecting pDots [i] and pDots [(i + 1)% 4]} pLines [i] = new CMdlLine; pLines [i] → m_pParentCoordinate = pt3DCursor. m_pPa
rentCoordinate; pLines [i] → m_pDot [0] = pDots [i]; Store endpoint pointers pLines [i] → m_pDot [1] = pDots [i + 1% 4]; Increment point reference count pLines [i] → m_pDot [0] → m_nCount ++; pLines [i] → m_pDot [1] → m_nCount ++; Calculate and set the control vector so that it becomes a straight line pLines [i] → m_Vect [0] = calculated vector; pLines [i] → m_Vect [1] = Calculated vector; Initialize control vector bias to 0 vector pLines [i] → m_Cnt_ref [0] .x = 0; pLines [i] → m_Cnt_ref [0] .y = 0; pLines [i ] → m_Cnt_ref [0] .z = 0; pLines [i] → m_Cnt_ref [1] .x = 0; pLines [i] → m_Cnt_ref [1] .y = 0; pLines [i] → m_Cnt_ref [1] .z = 0;}

【0119】以下上記で作成された4線分を境界線とす
る四角面を一つ生成する。 ・CMdl4patch* pNewPatch = new CMdl4patch ; ・pNewPatch→m_pDot = pDots ; 頂点ポインタを格納 ・pNewPatch→m_pLine = pLines ; 境界線ポインタを格
納 ・pNewPatch→m_pParentCoordinate = pt3DCursor. m_p
ParentCoordinate ; 面内制御点ベクトルおよびバイアスを0ベクトルに設定 ・for i=0 to 3 do begin pNewPatch→m_Vect[i].x = 0 ; pNewPatch→m_Vect[i].y = 0 ; pNewPatch→m_Vect[i].z = 0 ; pNewPatch→ m_Cnt_ref [i].x = 0 ; pNewPatch→ m_Cnt_ref [i].y = 0 ; pNewPatch→ m_Cnt_ref [i].z = 0 ; 境界線の参照カウントをインクリメント pNewPatch→ m_pLine [i].m_nCount ++ ; end ; 図27は右上の四点を選択し面を生成したところであ
る。ここで所定キーが押下されると図28のように右上
に面が作成される。次の図29は最終的に出来上がった
4つの面を斜め上から眺めたところ。
Hereinafter, one quadrangular surface whose boundary is the four line segments created above is generated.・ CMdl4patch * pNewPatch = new CMdl4patch; ・ pNewPatch → m_pDot = pDots; Stores the vertex pointer ・ pNewPatch → m_pLine = pLines; Stores the boundary pointer ・ pNewPatch → m_pParentCoordinate = pt3DCursor. M_p
ParentCoordinate; Set in-plane control point vector and bias to 0 vector ・ for i = 0 to 3 do begin pNewPatch → m_Vect [i] .x = 0; pNewPatch → m_Vect [i] .y = 0; pNewPatch → m_Vect [i ] .z = 0; pNewPatch → m_Cnt_ref [i] .x = 0; pNewPatch → m_Cnt_ref [i] .y = 0; pNewPatch → m_Cnt_ref [i] .z = 0; Increment boundary reference count pNewPatch → m_pLine [ i] .m_nCount ++; end; In FIG. 27, the four points at the upper right are selected to generate a surface. When a predetermined key is pressed here, a surface is created in the upper right as shown in FIG. The next figure 29 is a view of the four surfaces that were finally made from diagonally above.

【0120】(3)左上の面(面3と呼ぶことにする)
上に子図形として点を8点作成 先ず図30のように、左上の面(面3)を選択する。こ
れが今から作成する点の親亀の図形となる面である。
(マウスが左クリックされたときマウスポインタが面の
中央の近傍であればその面が選択される) この状態で子図形作成メニューを選択すると、図31の
ように選択された面の中央にカーソルが移動して表示さ
れる。これ以後マウスカーソルを上下左右に移動させる
に従い、その移動イベントを受け取る度に、親図形上の
面積座標を更新していく。これに伴い面の写像式によっ
て面積座標系から3次元座標系の座標値を計算し、スク
リーン座標に変換して新しい位置にカーソルを表示す
る。(OpenGLライブラリを使っている場合、3次
元座標系からスクリーン座標への変換はOpenGLが
行う)図32はマウスカーソルを左上斜め方向に移動し
た状態の表示である。
(3) Upper left surface (to be called surface 3)
8 points are created as child figures on the top First, as shown in FIG. 30, the upper left face (face 3) is selected. This is the surface that will become the figure of the parent turtle of the point that will be created from now.
(If the mouse pointer is near the center of the surface when the mouse is left-clicked, that surface is selected.) When the child figure creation menu is selected in this state, the cursor is moved to the center of the selected surface as shown in Fig. 31. Is moved and displayed. After that, as the mouse cursor is moved up, down, left, and right, the area coordinates on the parent figure are updated each time the move event is received. Along with this, the coordinate value of the three-dimensional coordinate system is calculated from the area coordinate system by the mapping formula of the surface, converted into screen coordinates, and the cursor is displayed at a new position. (When the OpenGL library is used, the conversion from the three-dimensional coordinate system to the screen coordinates is performed by OpenGL.) FIG. 32 shows a state in which the mouse cursor is moved diagonally to the upper left.

【0121】親図形の面積座標の更新は、以下のような
手順で行っている。先ず、親図形上の面積座標を保持し
ておくために、下記のような面積座標保存変数(実際は
後で点生成に使用するため本発明のCADの点として持
つ)を用意しておく。 ・CMdlDot pt3DCursor ; 現在の3次元カーソル位置保
存用変数 今の場合親亀図形は四角面であるので、先ず四角面の中
央、面積座標で言うと(αβγδ)=(1/4,1/4,1/4,1/4)に
初期設定される。実際は面積座標は独立な2変数で一意
的に決まるから、これを例えば(u,v)とするとこれを変
数ptParentCoorParamに保持しながら更新する。 ・u = v = 1/2 ; ・pt3DCursor.m_pParentRelation = 選択された親図形
を指すポインタ ・pt3DCursor.m_Ab.x = u ; pt3DCursor.m_Ab.x = v ; ・pt3DCursor.m_Ab_Ref.x = 0 ; 親からのオフセット
は0ベクトルに設定 ・pt3DCursor.m_Ab_Ref.y = 0 ; ・pt3DCursor.m_Ab_Ref.z = 0 ; 子図形作成メニューが選択されると、先ずこのように初
期化される。実際の面積座標と(u,v)の関係は、四角面
の場合、次のようにしておく。 α = 1 - u - v + γ β = u - γ γ = u * v δ = v - γ この関係を用いて何時でも面積座標系が得られる。
The area coordinates of the parent figure are updated in the following procedure. First, in order to hold the area coordinates on the parent figure, the following area coordinate storage variables (actually used as CAD points of the present invention for later use in point generation) are prepared.・ CMdlDot pt3DCursor; Current three-dimensional cursor position storage variable In this case, the parent turtle figure is a quadrilateral, so first of all, in the center of the quadrilateral, the area coordinates are (αβγδ) = (1 / 4,1 / 4, The initial setting is 1/4, 1/4). Actually, the area coordinates are uniquely determined by two independent variables, so if this is set to (u, v), this is updated while holding it in the variable ptParentCoorParam.・ U = v = 1/2; ・ pt3DCursor.m_pParentRelation = Pointer pointing to the selected parent shape ・ pt3DCursor.m_Ab.x = u; pt3DCursor.m_Ab.x = v; ・ pt3DCursor.m_Ab_Ref.x = 0; From parent The offset of is set to 0 vector. ・ Pt3DCursor.m_Ab_Ref.y = 0; ・ pt3DCursor.m_Ab_Ref.z = 0; When the child figure creation menu is selected, it is first initialized in this way. The relationship between the actual area coordinates and (u, v) is as follows for a square surface. α = 1-u-v + γ β = u-γ γ = u * v δ = v-γ With this relation, the area coordinate system can be obtained at any time.

【0122】マウスポインタの移動量は、面積座標のス
ケールからすると大きすぎるので、実際はマウスポイン
タの移動量に小さな係数を掛けた値を変化量として(u,
v)を更新している。マウスポインタ異動イベントをウイ
ンドウシステムから受け取る度に、以下のようにしてパ
ラメータ(u,v)を更新する。 ・u = ptParentCoorParam.x ; v = ptParentCoorPara
m.x ; ・u = u + 0.001*Δmx ; v = v + 0.001*Δmy ; ・ptParentCoorParam.x = u ; ptParentCoorParam.x =
v ; ここでΔmxおよびΔmyはマウスのx、y方向の移動量で
ある。(デバイスの座標系によっては符号が逆転するこ
とがある)このようにして順次親亀図形上の面積座標が
変化していく。カーソルの更新は、上記の更新後の(u,
v)から面積座標(αβγδ)を計算した後、四角面の写像
式を用いて三次元空間に写像した後スクリーン座標系に
変換し表示位置を更新する。なお、OpenGLライブ
ラリを使用する場合は、最後のスクリーン座標系に変換
し表示する処理はOpenGLに委ねられる。アプリと
しては3次元空間上に十字カーソルを直接描画している
イメージになる。
Since the amount of movement of the mouse pointer is too large from the scale of area coordinates, the value obtained by multiplying the amount of movement of the mouse pointer by a small coefficient is (u,
v) is being updated. Each time the mouse pointer change event is received from the window system, the parameters (u, v) are updated as follows.・ U = ptParentCoorParam.x; v = ptParentCoorPara
mx; ・ u = u + 0.001 * Δmx; v = v + 0.001 * Δmy; ・ ptParentCoorParam.x = u; ptParentCoorParam.x =
v; where Δmx and Δmy are the movement amounts of the mouse in the x and y directions. (The sign may be reversed depending on the coordinate system of the device.) In this way, the area coordinates on the parent turtle figure change sequentially. The cursor is updated by (u,
After calculating the area coordinates (αβγδ) from v), it is mapped to the three-dimensional space using the mapping formula of the quadrangular surface and then converted to the screen coordinate system to update the display position. When the OpenGL library is used, the process of converting to the final screen coordinate system and displaying it is left to OpenGL. As an application, it will be an image in which a crosshair cursor is directly drawn in the three-dimensional space.

【0123】マウスの左ボタンダウン(押下)のイベン
トを受け取ると図33の左上の白い点で示したように、
その時点の親亀図形座標パラメータにより定まる面積座
標位置に子図形としての点が生成される。この時点で次
のように現在の3Dカーソル情報を複写する形で新しい
点を親亀図形上に生成する。 ・CmdlDot* pNewDot = new CMdlDot ; ・pNewDot→m_Ab = pt3DCursor.m_Ab ; ・pNewDot→m_AbRef = pt3DCursor.m_AbRef ; ・pNewDot→m_pParentReration = pt3DCursor. m_pPare
ntReration ; ・pNewDot→m_pParentCoordinate = pt3DCursor. m_pPa
rentCoordinate ; このようにして生成された点は、現在のパーツ(アクテ
ィブパーツ)のメンバーとして登録されると共に描画図
形リストに登録されて表示される。実施例では最終的に
は図34のように8点が作成される。図35は出来上が
った状態を斜め情報から眺めたものである。図36に示
すように、それぞれの点の親面からのオフセットベクト
ルは0ベクトルなので、親面にぴったり張り付いてみえ
る。
When the event of the left button down (press) of the mouse is received, as shown by the white dot in the upper left of FIG. 33,
A point as a child figure is generated at the area coordinate position determined by the parent turtle figure coordinate parameter at that time. At this point, a new point is created on the parent turtle figure by copying the current 3D cursor information as follows.・ CmdlDot * pNewDot = new CMdlDot; ・ pNewDot → m_Ab = pt3DCursor.m_Ab; ・ pNewDot → m_AbRef = pt3DCursor.m_AbRef; ・ pNewDot → m_pParentReration = pt3DCursor.
ntReration; ・ pNewDot → m_pParentCoordinate = pt3DCursor.m_pPa
rentCoordinate; The point generated in this way is registered as a member of the current part (active part) and also displayed in the drawing figure list. In the embodiment, 8 points are finally created as shown in FIG. FIG. 35 is a view of the completed state from oblique information. As shown in FIG. 36, since the offset vector of each point from the parent plane is a 0 vector, it can be seen that it sticks to the parent plane.

【0124】(4)面3上に作成された8点(子図形)
から5つの子面を作成 前項(3)で作成された点を頂点とする四角面を5つ作
成する手順を説明する。オペレータの操作としては前述
の(2)で述べたことと全く同じである。(図37参
照) この状態で所定キーを押下されると図38のように面が
作成される。これは前述の(2)と全く同じであるが、
出来上がる面が選ばれた頂点と同じ親の子面になってい
ることだけが異なる。つまり、その境界線と同様にとな
る面に乗っかるように面内制御点ベクトルが計算され設
定される。同様の手順で他の4面を作成した結果が図3
9である。図40は斜め上方から眺めたものである。
(4) Eight points (child figure) created on the surface 3
The following describes the procedure for creating five square faces whose vertexes are the points created in (3) above. The operation of the operator is exactly the same as that described in (2) above. (Refer to FIG. 37) When a predetermined key is pressed in this state, a surface is created as shown in FIG. This is exactly the same as (2) above,
The only difference is that the resulting surface is a child surface of the same parent as the selected vertex. In other words, the in-plane control point vector is calculated and set so as to ride on the same plane as the boundary line. Figure 3 shows the result of creating the other four sides in the same procedure.
It is 9. FIG. 40 is viewed from diagonally above.

【0125】以下4つの頂点が同一図形(この場合四角
面)の子である場合に、その同じ図形の子面として面を
生成する手順を示す。 ・CMdlDot* pDots[4] ; 選択された4点を保持する配列 ・CMdlLine* pLines[4] ; 面境界線4本を保持する配列 図形選択リストに4点が保持されていることなどチェッ
クすし、OKならpDotsに順次リストの要素を取り出し
て格納する。この時全ての点が同じ親を持つかチェック
して異なる親の場合は、前述(2)と同じ処理を行う。
同じ親を持つなら以下の手順で、その図形の子面として
新しい面を生成する。選択された4点より閉じた境界線
4本を作成する。ただし、2点間に既に線分が繋がれて
いる場合は、その線分を再利用する。この場合出来上が
る線分は、親図形に乗るように制御ベクトルが計算され
て設定される。 ・i=0から3まで下記処理を繰り返す。 { もしpDots[i].m_nCountが0より大、かつpDots[i+1%
4].m_nCountが0より大ならば下記処理を実行{pLines
[i]=SerchLine(pDots[i], pDots[i+1%4], pDots[i]→m_
pParentRelation) ;もし pLines[i]がnullでなければ続
行;即ち、既に作成した線分群からpDots[i]とpDots[(i
+1)%4]を結び、且つ同じ親図形に乗っかる線分を検索} pLines[i] = new CMdlLine ; pLines[i]→m_pParentCoordinate = pt3DCursor. m_pPa
rentCoordinate ; pLines[i]→m_pParentRelation = pDots[0]→ m_pParen
tRelation ; pLines[i]→m_pDot[0] = pDots[i] ; 端点ポインタを格
納 pLines[i]→m_pDot[1] = pDots[i+1%4] ; 点の参照カウントをインクリメント pLines[i]→m_pDot[0]→m_nCount++ ; pLines[i]→m_pDot[1]→m_nCount++ ; 親亀に乗る曲線になるように制御ベクトルを計算して設
定 pLines[i]→m_Vect[0]= 計算したベクトル; pLines[i]→m_Vect[1]= 計算したベクトル; 制御ベクトルバイアスを0ベクトルに初期化 pLines[i]→ m_Cnt_ref [0].x = 0 ; pLines[i]→ m_Cnt_ref [0].y = 0 ; pLines[i]→ m_Cnt_ref [0].z = 0 ; pLines[i]→ m_Cnt_ref [1].x = 0 ; pLines[i]→ m_Cnt_ref [1].y = 0 ; pLines[i]→ m_Cnt_ref [1].z = 0 ; }
A procedure for generating a face as a child face of the same figure when the four vertices are children of the same figure (square surface in this case) will be described below.・ CMdlDot * pDots [4]; Array holding 4 selected points ・ CMdlLine * pLines [4]; Array holding 4 face boundary lines Check that 4 points are held in the figure selection list, If OK, the elements of the list are sequentially fetched and stored in pDots. At this time, it is checked whether all points have the same parent, and if they are different parents, the same processing as the above (2) is performed.
If you have the same parent, follow the steps below to create a new face as a child face of the figure. Create four closed border lines from the selected four points. However, if a line segment is already connected between two points, that line segment is reused. In this case, the completed line segment is set by calculating the control vector so as to ride on the parent figure.・ Repeat the following process from i = 0 to 3. {If pDots [i] .m_nCount is greater than 0 and pDots [i + 1%
4]. If m_nCount is greater than 0, execute the following process {pLines
[i] = SerchLine (pDots [i], pDots [i + 1% 4], pDots [i] → m_
pParentRelation); If pLines [i] is not null, continue; that is, pDots [i] and pDots [(i
+1)% 4] is connected and the line segment that rides on the same parent figure is searched} pLines [i] = new CMdlLine; pLines [i] → m_pParentCoordinate = pt3DCursor. M_pPa
rentCoordinate; pLines [i] → m_pParentRelation = pDots [0] → m_pParen
tRelation; pLines [i] → m_pDot [0] = pDots [i]; Store endpoint pointers pLines [i] → m_pDot [1] = pDots [i + 1% 4]; Increment point reference count pLines [i] → m_pDot [0] → m_nCount ++; pLines [i] → m_pDot [1] → m_nCount ++; Calculate and set the control vector so that it becomes a curve that rides on the parent turtle pLines [i] → m_Vect [0] = calculated vector; pLines [i] → m_Vect [1] = Calculated vector; Initialize control vector bias to 0 vector pLines [i] → m_Cnt_ref [0] .x = 0; pLines [i] → m_Cnt_ref [0] .y = 0 ; pLines [i] → m_Cnt_ref [0] .z = 0; pLines [i] → m_Cnt_ref [1] .x = 0; pLines [i] → m_Cnt_ref [1] .y = 0; pLines [i] → m_Cnt_ref [ 1] .z = 0;}

【0126】以下上記で作成された4線分を境界線と
し、同じ親に乗った四角面を一つ生成する。 ・CMdl4patch* pNewPatch = new CMdl4patch ; ・pNewPatch→m_pDot = pDots ; 頂点ポインタを格納 ・pNewPatch→m_pLine = pLines ; 境界線ポインタを格
納 ・pNewPatch→m_pParentCoordinate = pt3DCursor. m_p
ParentCoordinate ; ・pLines[i]→m_pParentRelation = pDots[0]→ m_pPar
entRelation ; 親面に乗るように面内制御点ベクトルを計算する。 ・for i=0 to 3 do begin 面内制御点ベクトルを計算さ
れた値に設定 pNewPatch→m_Vect[i] = 計算された面内制御点iのベ
クトル ; end ; ・for i=0 to 3 do begin: 面内制御点バイアスを0ベ
クトルに設定 pNewPatch→ m_Cnt_ref [i].x = 0 ; pNewPatch→ m_Cnt_ref [i].y = 0 ; pNewPatch→ m_Cnt_ref [i].z = 0 ; 境界線の参照カウントをインクリメント pNewPatch→ m_pLine [i].m_nCount ++ ; end ; 流れとして、前述(2)と異なるのは、親面に乗るよう
に境界線と面自身の制御ベクトルが計算されること、お
よび親亀図形を指すポインタが設定されることである。
図41は出来上がりの状態をレンダリングしたものであ
る。
Hereinafter, using the four line segments created above as boundaries, one square surface riding on the same parent is generated.・ CMdl4patch * pNewPatch = new CMdl4patch; ・ pNewPatch → m_pDot = pDots; Stores vertex pointers ・ pNewPatch → m_pLine = pLines; Stores boundary pointers ・ pNewPatch → m_pParentCoordinate = pt3DCursor. M_p
ParentCoordinate; ・ pLines [i] → m_pParentRelation = pDots [0] → m_pPar
entRelation; Calculate in-plane control point vector so as to ride on the parent plane.・ For i = 0 to 3 do begin Set the in-plane control point vector to the calculated value pNewPatch → m_Vect [i] = Calculated vector of in-plane control point i; end; ・ for i = 0 to 3 do begin : In-plane control point bias is set to 0 vector pNewPatch → m_Cnt_ref [i] .x = 0; pNewPatch → m_Cnt_ref [i] .y = 0; pNewPatch → m_Cnt_ref [i] .z = 0; Boundary line reference count Increment pNewPatch → m_pLine [i] .m_nCount ++; end; As a flow, the difference from (2) above is that the control vectors of the boundary line and the surface itself are calculated so as to ride on the parent surface, and the parent turtle shape Is to set a pointer to.
FIG. 41 is a rendering of the finished state.

【0127】(5)子面(5つの子面の中央の面)のリ
フト 次に前項(4)で作成された子面の内中央の一つの子面
を選択してZ方向にリフトする処理について説明する。
図42はリフトする点を選んだ状態の表示である。この
図42では真中の子面の4頂点を選んだものである。図
43では頂点を選んでいるが、真中の面全体を選んでも
同じである。ここで移動メニューが選択される、もしく
は所定キーが押下されると選ばれた点もしくは面の頂点
が、マウスの移動により定まる量だけ移動される。(キ
ー入力によりオフセットを指定することも可能)。図4
4は作成例で、Shiftキーとマウス左ボタンを押し
ながらマウスポインタをドラッグしたときの結果であ
る。Shiftキーが押された状態でマウスをドラッグ
すると、現在の座標系のZ軸方向の移動として扱われ
る。
(5) Lifting of the child surface (center surface of the five child surfaces) Next, processing for selecting one child surface in the center of the child surfaces created in (4) above and lifting in the Z direction Will be described.
FIG. 42 shows a display in which a point to be lifted is selected. In FIG. 42, the four vertices of the child face in the middle are selected. Although the vertices are selected in FIG. 43, the same is true when the entire center plane is selected. Here, when the move menu is selected or a predetermined key is pressed, the selected point or vertex of the surface is moved by an amount determined by moving the mouse. (It is also possible to specify the offset by key input). Figure 4
4 is a creation example, which is a result of dragging the mouse pointer while pressing the Shift key and the left mouse button. If the mouse is dragged while the Shift key is pressed, it is treated as movement in the Z-axis direction of the current coordinate system.

【0128】この場合面自身の情報、つまり面内制御点
ベクトルおよび面内制御点ベクトルバイアスは一切変更
されず、頂点の親に対するオフセットベクトルのみが変
更される。また、境界線の情報、つまり制御ベクトルと
制御ベクトルバイアスも一切変更されない。これは乗っ
かる親が変形されなかった結果であり、次に述べる
(5)のように親面が何らかの影響で変形される場合
は、その子図形の制御ベクトルが変更される。選ばれた
点については、親図形からのオフセットベクトルだけが
変更される。具体的に述べると、pPointが選ばれた点の
一つを指すポインタ変数であるとするとき、 ・pPoint→m_Ab_Ref = pPoint→m_Ab_Ref + delta ; となる。この操作を選ばれた点全てに行えばよい。ここ
でdeltaは移動量を表すベクトルである。マウス操作の
場合は、現在の座標系のX−Y平面かZ軸に平行なベク
トルである。(ただし、前者はメニューでX−Z平面か
Y−Z平面に切り替えることもできる。)なお、前述し
たように面が選択されている場合は、その面の頂点が全
て選ばれたものとして同一の処理が行われる。図45に
作成例での子面Z方向リフトの結果のレンダリング表示
を示す。ところで点が別の図形の子図形である場合の3
次元空間への写像については、次の計算式により3次元
空間上の座標を計算している。先ず、点の親亀図形パラ
メータを取り出して(u,v)とする。 ・u = pPoint→m_Ab.x ; v = pPoint→m_Ab.y ; (u,v)から図56の表により親図形の線分座標/面積座
標を計算する。ここで得られた線分座標/面積座標を用
いて親図形の写像式に当てはめると、先ずオブセットベ
クトルが0の場合の座標が得られる。この位置ベクトル
をPとするとき、 ・pPoint→m_Xyz = P + pPoint→ m_Ab_Ref ; によって最終的に3次元座標にマッピングされる。
In this case, the information of the surface itself, that is, the in-plane control point vector and the in-plane control point vector bias are not changed at all, and only the offset vector for the vertex parent is changed. In addition, the boundary information, that is, the control vector and the control vector bias are not changed at all. This is a result of not deforming the riding parent, and when the parent surface is deformed by some influence as in (5) described below, the control vector of the child figure is changed. For the selected point, only the offset vector from the parent figure is changed. Specifically, when pPoint is a pointer variable that points to one of the selected points: pPoint → m_Ab_Ref = pPoint → m_Ab_Ref + delta; This operation should be performed on all selected points. Here, delta is a vector representing the movement amount. In the case of mouse operation, it is a vector parallel to the XY plane or Z axis of the current coordinate system. (However, the former can be switched to the XZ plane or the YZ plane from the menu.) If a face is selected as described above, it is the same as if all the vertices of the face were selected. Is processed. FIG. 45 shows a rendering display of the result of the child surface Z-direction lift in the creation example. By the way, 3 when the point is a child figure of another figure
Regarding the mapping to the three-dimensional space, the coordinates in the three-dimensional space are calculated by the following calculation formula. First, the parent turtle graphic parameter of the point is taken out and set to (u, v).・ From u = pPoint → m_Ab.x; v = pPoint → m_Ab.y; (u, v), the line segment coordinates / area coordinates of the parent figure are calculated from the table in FIG. When the line segment coordinates / area coordinates obtained here are applied to the mapping equation of the parent figure, the coordinates when the obset vector is 0 are first obtained. When this position vector is P, it is finally mapped to three-dimensional coordinates by pPoint → m_Xyz = P + pPoint → m_Ab_Ref;

【0129】(6)面1(左下の面)のZ方向リフト 次に前項(5)の後に最初に作成したベースとなる面の
一つをZ軸方向にリフトする操作について説明する。面
をリフトするためには、前項の(5)と同様に最初にリ
フトする面、もしくはその面の頂点全てを選択する。図
46は左下の面をリフトするために選んだところであ
る。ここでは今までの説明に出てきたとおり、選ばれた
図形が選択図形リストに登録されていく。なお、Cntlキ
ーを押しながらマウスで選択すると同時に複数の図形を
選ぶことができる。前項(5)と同様この状態で、この
タイミングで移動メニューが選択される、もしくは所定
キーが押下されると選ばれた点もしくは面の頂点が、マ
ウスの移動により定まる量だけ移動される。(キー入力
によりオフセットを指定することも可能)。
(6) Lifting of Surface 1 (Bottom Left Surface) in Z Direction Next, an operation of lifting one of the base surfaces first created after the previous item (5) in the Z axis direction will be described. In order to lift the surface, the surface to be lifted first or all the vertices of the surface is selected as in (5) of the previous section. FIG. 46 has been selected to lift the lower left surface. As described above, the selected figure is registered in the selected figure list. You can select multiple figures at the same time by holding down the Cntl key and selecting with the mouse. In this state, as in the case of (5) above, when the move menu is selected or a predetermined key is pressed at this timing, the selected point or the vertex of the surface is moved by the amount determined by the mouse movement. (It is also possible to specify the offset by key input).

【0130】図47は作成例のもので、Shiftキー
とマウス左ボタンを押しながらマウスポインタをドラッ
グしたときの結果である。Shiftキーが押された状
態でマウスをドラッグすると、現在の座標系のZ軸方向
の移動として扱われる。この場合はリフトされる面に関
しては、その頂点の座標値が変更されるのみである。具
体的に述べると、pPointが選ばれた点の一つを指すポイ
ンタ変数であるとするとき、 ・pPoint→m_Xyz = pPoint→m_Xyz + delta ; となる。この操作を選ばれた点全てに行えばよい。ここ
でdeltaは移動量を表すベクトルである。マウス操作の
場合は、現在の座標系のX−Y平面かZ軸に平行なベク
トルである。(ただし、前者はメニューでX−Z平面か
Y−Z平面に切り替えることもできる。)なお、前述し
たように面が選択されている場合は、その面の頂点が全
て選ばれたものとして同一の処理が行われる。この場合
一つの面がリフトされたことによって、他の図形の子で
はない面や線分(曲線)については、頂点もしくは線分
端点の座標値が変更されるだけであるが、前述(4)で
作成された子図形である線分や面は、親面の変形に追随
するように、線分の制御ベクトルおよび子面の面内制御
点ベクトルが再計算されて更新される。ただし、点につ
いては子図形であっても親図形に対するパラメータ(親
亀図形パラメータとオフセットベクトル)は変更されず
普遍のままである。(この場合でもパラメータから計算
により求める3次元座標値は変更になる)図48は以上
の操作による最終的形状をレンダリングにより表示した
ものである。
FIG. 47 shows an example of creation and shows the result when the mouse pointer is dragged while the Shift key and the left mouse button are pressed. If the mouse is dragged while the Shift key is pressed, it is treated as movement in the Z-axis direction of the current coordinate system. In this case, the coordinate values of the vertices of the lifted surface are only changed. Specifically, when pPoint is a pointer variable pointing to one of the selected points, then: pPoint → m_Xyz = pPoint → m_Xyz + delta; This operation should be performed on all selected points. Here, delta is a vector representing the movement amount. In the case of mouse operation, it is a vector parallel to the XY plane or Z axis of the current coordinate system. (However, the former can be switched to the XZ plane or the YZ plane from the menu.) If a face is selected as described above, it is the same as if all the vertices of the face were selected. Is processed. In this case, since one surface is lifted, the coordinate value of the vertex or the end point of the line segment is only changed for the surface or line segment (curve) that is not a child of another figure. For the line segment or surface that is the child figure created in step 1, the control vector of the line segment and the in-plane control point vector of the child surface are recalculated and updated so as to follow the deformation of the parent surface. However, regarding the point, even if it is a child figure, the parameters (parent turtle figure parameter and offset vector) for the parent figure are not changed and remain the same. (Even in this case, the three-dimensional coordinate values calculated from the parameters are changed.) FIG. 48 shows the final shape obtained by the above operation by rendering.

【0131】(7)面2(右下の面)の境界線の制御ベ
クトルリサイズ 次に前項(6)の変形に加えて、リフトされた面の右に
隣接する面の境界線2本の制御ベクトルの長さを大きく
して袖部分の勾配を緩くする変形を施す。ここではベク
トルの変更であるので、選ぶべきは線分の制御ベクトル
である。本システムにおいては、マウスポインタを選び
たいベクトル側の線分の1/3付近に移動させて左ボタ
ンを押下することで選択する。図49は二つのベクトル
を同時に選んだ場合のものである。(複数選択はCntlキ
ーを押しながら行う)選択された制御ベクトルが2本表
示されている。作成例ではX軸方向にベクトルを伸ばし
ているが、任意方向に変更可能である。また、キー入力
で直接値を変更することもできる。
(7) Control Vector Resizing of Boundary Line of Surface 2 (Bottom Right Surface) Next, in addition to the modification of (6) above, control of two boundary lines of the surface adjacent to the right of the lifted surface. Apply a transformation that increases the length of the vector and loosens the gradient of the sleeve. Since it is a vector change here, the control vector of the line segment should be selected. In this system, the mouse pointer is moved to around 1/3 of the line segment on the desired vector side and the left button is pressed to select. FIG. 49 shows the case where two vectors are selected at the same time. (Multiple selection is done while pressing the Cntl key) Two selected control vectors are displayed. In the created example, the vector is extended in the X-axis direction, but it can be changed in any direction. Also, the value can be changed directly by key input.

【0132】点の移動と同様に移動メニューでベクトル
を変更可能であるが、本システムでは図50ようにX軸
方向変形(リサイズ)に制約した変形操作を使ってい
る。図51はX軸方向(−方向)にベクトルを拡大した
結果、図52はレンダリングした結果である。ベクトル
の変形量設定は、今まで述べた点の移動と全く同じ要領
で行われる。プログラム的には選択された線分のベクト
ルに対して次のような処理を施している。 ・pLine→m_Vect[?] = pLine → m_Vect[?] + delta ; この操作を選ばれた線分の選ばれたベクトルについて行
えばよい。 ここでdeltaは移動量(変化量)を表すベク
トルであり、pLineは選ばれたベクトルを持つ線分を指
すポインタである。ベクトルが選ばれると選択図形リス
トには、そのベクトルを持つ線分が登録され、その線分
の制御ベクトル選択フラグにどのベクトルが選択されて
いるかのビットフラグが設定される。(線分のm_nAttr_
vselフィールド)作成例では、モデルデータの属性で変
更されるのは、選ばれたベクトルを持つ線分のその選ば
れたベクトルのみである。この場合子図形を持つ面(面
3)は一切変形されないので、その子図形にも何の変更
も発生しない。ただし、親図形の境界線の制御ベクトル
が選択され変更された場合は、前述(6)で説明したよ
うに子図形の属性値も追随して変更されることになる。
図51の場合は、係わる線分が親を持たない独立した線
分ゆえ、 ・pLine→m_Vect[?] = pLine → m_Vect[?] + delta ; のように制御ベクトルを直接更新するが、もし線分が別
の図形の子図形である場合は、 ・pLine→m_Cnt_ref[?] = pLine → m_Cnt_ref[?] + de
lta ; のようにバイアスベクトルの方を更新し、親に乗っかる
場合の制御ベクトル計算式(数8)[0036]によっ
て制御ベクトルが再計算されて設定される。
The vector can be changed in the movement menu as in the case of moving the point, but in this system, the deformation operation restricted to the X-axis direction deformation (resizing) is used as shown in FIG. 51 shows the result of expanding the vector in the X-axis direction (-direction), and FIG. 52 shows the result of rendering. The vector deformation amount is set in exactly the same manner as the point movement described above. Programmatically, the following processing is applied to the selected line segment vector. • pLine → m_Vect [?] = PLine → m_Vect [?] + Delta; This operation may be performed on the selected vector of the selected line segment. Here, delta is a vector representing the amount of movement (change amount), and pLine is a pointer that points to a line segment having the selected vector. When a vector is selected, a line segment having the vector is registered in the selected figure list, and a bit flag indicating which vector is selected is set in the control vector selection flag of the line segment. (Line segment m_nAttr_
(vsel field) In the creation example, only the selected vector of the line segment having the selected vector is changed by the attribute of the model data. In this case, since the surface having the child figure (surface 3) is not deformed at all, no change occurs in the child figure. However, when the control vector of the boundary line of the parent figure is selected and changed, the attribute value of the child figure is also changed as described above in (6).
In the case of FIG. 51, since the line segment concerned is an independent line segment having no parent, the control vector is directly updated like pLine → m_Vect [?] = PLine → m_Vect [?] + Delta; When minute is a child figure of another figure, ・ pLine → m_Cnt_ref [?] = PLine → m_Cnt_ref [?] + De
The bias vector is updated like lta ;, and the control vector is recalculated and set by the control vector calculation formula (Equation 8) [0036] when riding on the parent.

【0133】(8)面3(親面)の境界線のZ方向リフ
ト 今度は子図形を持つ面(面3)の境界線の一つをZ軸方
向にリフトする操作を実行するについて説明する。図5
3はリフトする境界線を選択した状態のものである。前
述したようにこの場合も線分の2端点を同時に選択して
も効果として同じである。このタイミングで移動メニュ
ーが選択されるとその後選択された線分の2端点の座標
を変更する操作に入る。勿論キー入力による移動メニュ
ーがあるので、それを選択してオフセット移動すること
も可能である。作成例ではSihtキーを押しながらマウス
ポインタをドラッグすることによりZ軸方向にリフトし
た。(図54)この場合、2端点の座標値が更新される
のは勿論、親面の形状が変化するので、(6)項で述べ
たように、子図形の制御ベクトルが面の変形に追随して
更新される。この例では移動する2端点は親を持たない
独立点なので、m_Xyzの座標値が直接更新されることに
なる。ところで、ここまでの変形でも親面自身の制御ベ
クトル(面内制御点ベクトルおよびバイアス)は初期の
まま変更されていない。この面自身は他の図形の子にな
っていないので、直接指定してこれら制御ベクトルを変
更しない限り更新されることは無い。図55はここまで
の変形結果のレンダリング表示である。
(8) Lifting of Boundary Line of Surface 3 (Parent Surface) in Z Direction Now, an operation of lifting one of the boundary lines of a surface (surface 3) having a child figure in the Z-axis direction will be described. . Figure 5
3 is a state in which the boundary line to be lifted is selected. As described above, also in this case, selecting two end points of the line segment at the same time has the same effect. When the move menu is selected at this timing, the operation for changing the coordinates of the two end points of the selected line segment is then started. Of course, since there is a movement menu by key input, it is possible to select it and perform offset movement. In the created example, the mouse pointer was dragged while pressing the Siht key to lift in the Z-axis direction. (FIG. 54) In this case, since the coordinate values of the two end points are updated and the shape of the parent surface is changed, the control vector of the child figure follows the deformation of the surface as described in (6). And will be updated. In this example, the two endpoints that move are independent points that have no parent, so the coordinate values of m_Xyz are updated directly. By the way, even with the modification so far, the control vector (in-plane control point vector and bias) of the parent surface itself is not changed as it is. Since this surface itself is not a child of other figures, it is not updated unless these control vectors are changed by directly specifying it. FIG. 55 is a rendering display of the transformation result up to this point.

【0134】<<体積保持変形機能>>オプションとし
て、下記のような体積保持変形機能を備えてもよい。 1.操作手順 1−1.体積保持変形の対象とする図形の指定(体積引
出線作成) (1)立体(四面体、五面体、六面体)を対象とする場
合 ・立体を作成し選択する。(既に作成されている場合は
それを選択する) ・「補助」→「体積引出線」→「作成」メニューで選択
された図形を指す体積引出線を作成する。 (2)複数の面で囲まれた立体を対象とする場合 ・面を繋いで閉じた立体を作成する。(既に作成されて
いる場合は不要) ・上記で作成した面群を全て選択して一つのグループを
生成する。 ・「補助」→「体積引出線」→「作成」で作成したグル
ープを指す体積引出線を作成する。 ここで作成した体積引出線は体積一定で変形を行う図形
全体を指し示す役割も担うと同時に体積の表示を行うた
めに使用される。 1−2.図形選択解除 次の1−3でオペレータの指示により移動する部分(能
動要素)、および体積を一定に保つように収束計算によ
り移動される従動要素を選択するために、1−1の操作
で行った図形選択を解除する。 1−3.従動要素の指定 1−1で作成した体積引出線が指す図形の構成要素から
から、従動要素を選択した後に、「体積保持変形」→
「従動要素」→「作成」メニューにより従動要素を指定
する。なお、「能動要素」とは、オペレータが指定して
移動する点、線および面であり、「従動要素」とは、
「能動要素」の移動に伴う体積変化をキャンセルするよ
うに移動する点、線および面である。なお、「従動要
素」は以下1−6で指定される膨張・収縮原点を中心に
膨張、収縮するように移動する。 1−4.図形選択解除 次の1−5で能動要素を選択するため1−3の操作で行
った図形選択を解除する。 1−5.体積保持変形したい図形の体積引出線選択して
から、能動要素を選択する。このとき、能動要素の構成
要素が従動要素の構成要素でもある場合は、処理は行わ
れない。 1−6.従動要素の膨張・収縮原点の指定 1−1で指定された体積保持変形の対象となる立体の内
部に、従動要素を移動させるときに参照する膨張・収縮
原点の位置を指定する。 1−7. 体積保持変形→平行(リサイズ)→[任意の変形方向] マ
ウスで変形、あるいは、体積保持変形→平行(リサイズ)
→キー入力でキー入力で変形を行う。
<< Volume Holding Deformation Function >> As an option, the following volume holding deformation function may be provided. 1. Operation procedure 1-1. Designation of figure for volume retention deformation (volume leader drawing) (1) When a solid (tetrahedron, pentahedron, hexahedron) is targeted: -Create and select a solid. (If it has already been created, select it.) ・ Create a volume leader that points to the figure selected in the "Auxiliary" → "Volume leader" → "Create" menu. (2) When a solid surrounded by a plurality of faces is targeted: -Connecting faces to create a closed solid. (Not required if already created) ・ Select all the surface groups created above and create one group. -Create a volume leader line that points to the group created by "Auxiliary" → "Volume leader line" → "Create". The volume leader created here plays a role of indicating the entire figure that is deformed with a constant volume, and is used to display the volume at the same time. 1-2. Figure selection cancellation In the next 1-3, perform the operation in 1-1 to select the part (active element) that moves according to the operator's instruction and the driven element that moves by convergence calculation so as to keep the volume constant. Cancel the selected figure. 1-3. After selecting the driven element from the constituent elements of the figure indicated by the volume leader created in Specifying the driven element 1-1, "Volume holding deformation" →
Specify the driven element from the "Driven element"->"Create" menu. The "active element" is a point, line, or plane that the operator specifies and moves, and the "driven element" is
Points, lines and planes that move to cancel the volume change associated with the movement of the "active element". The "driven element" moves so as to expand and contract around the expansion / contraction origin specified in 1-6 below. 1-4. Canceling the figure selection In the next 1-5, the figure selection made by the operation 1-3 to select the active element is canceled. 1-5. Volume retention Select the volume leader of the figure you want to transform and then select the active element. At this time, if the constituent element of the active element is also the constituent element of the driven element, no processing is performed. 1-6. Designation of the origin of expansion / contraction of the driven element The location of the origin of expansion / contraction referred to when the driven element is moved is specified inside the solid body targeted for volume retention deformation specified in 1-1. 1-7. Volume retention deformation → Parallel (Resize) → [Arbitrary deformation direction] Transform with mouse, or Volume retention deformation → Parallel (Resize)
→ Use key input to transform by key input.

【0135】2. 内部動作 2−1.体積保持変形の対象となる図形の体積を計算し
て所定の変数に記憶しておく。
2. Internal operation 2-1. The volume of the figure to be subjected to volume retention deformation is calculated and stored in a predetermined variable.

【0136】2−2.能動要素を1−7で指定された移
動量分だけ移動させ体積を計算する。 2−3.2−2で計算した体積が2−1で記憶している
体積より大きくなっていれば、従動要素を膨張・収縮原
点へ向かって縮小量移動させる。逆に2−1で記憶して
いる体積より小さくなっていれば、従動要素を膨張・収
縮原点から逆方向に向かって縮小量移動させる。この時
2−1ど同じ方法で対象とする立体について体積計算を
行い2−1で記憶している体積との差を計算して、その
誤差が所定の許容値を下回るまで従動要素の微小移動を
繰り返す。 2−4.ESCキーが押下されるか他のメニューが選択
されていなければ、再び2−2へ戻り能動要素の移動指
定を待つ。
2-2. The volume is calculated by moving the active element by the movement amount specified in 1-7. If the volume calculated in 2-3-2-2 is larger than the volume stored in 2-1, the driven element is moved by the reduction amount toward the expansion / contraction origin. On the contrary, if the volume is smaller than the volume stored in 2-1, the driven element is moved from the expansion / contraction origin in the opposite direction by the reduction amount. At this time, the volume is calculated for the target solid by the same method as in 2-1 and the difference with the volume stored in 2-1 is calculated, and the minute movement of the driven element is continued until the error falls below a predetermined allowable value. repeat. 2-4. If the ESC key is pressed or no other menu is selected, the process returns to 2-2 and waits for the designation of movement of the active element.

【0137】[0137]

【発明の効果】以上説明したように、この発明によれ
ば、面要素は、従来のCAD方式における面処理方式に
対比して、広い領域を一つのパッチ(1つの面要素)で
表現することが可能になる。また、このパッチで全ての
面を近似表現するようにしているので、面の取扱いに一
貫性をもたせることができる。従って、図形を記述する
ためのデータ量を大幅に低減し、コンピュータの演算処
理の負荷を減少させることができる。また、この発明に
よると、生成される立体図形が3次形式で表現される空
間座標をもつ点群で定義される場合は、演算数を必要以
上に増大せずに、面端の接線を連続的に接合する関係を
維持しつつ、面を変形でき、十分に実用的な3次元図形
表現を得ることができる。この効果は、微分連続性を制
御するベクトルが点の移動に影響されず保持されるた
め、一旦設定した微分連続性を維持しつつ曲線や面の変
形を行うための処理が単純な点の移動処理に帰着され
る。例えば、金型の最終形状にいたるまでの中間工程で
の形状を、元の図形から面や曲線の頂点移動だけで細か
な調整を必要とせず簡単に得られるなど、点の移動によ
る中間形状に威力を発揮する。また、この発明による
と、図形要素の親子関係を容易に定義可能であり、例え
ば親図形の曲面上において当該曲面に沿って子図形を移
動することが容易にできる。また、各図形要素は参照計
数データを持っているので、或る要素を削除しようとす
る場合、参照計数データを参照して当該要素が他の要素
の構成要因になっているか否かを確認し、削除の可否を
有効に判別することができる。更に、体積保持変形のよ
うな応用例において、従動要素となる点を体積一定にな
るように収束計算によって移動させるが、このときも面
の微分連続性が維持されており、鍛造の金型設計等にお
いて効果がある。
As described above, according to the present invention, the surface element represents a wide area with one patch (one surface element) as compared with the surface processing method in the conventional CAD method. Will be possible. In addition, since all the surfaces are approximated by this patch, the handling of the surfaces can be made consistent. Therefore, the amount of data for describing a figure can be significantly reduced, and the load of computer arithmetic processing can be reduced. Further, according to the present invention, when the generated three-dimensional figure is defined by the point group having the spatial coordinates expressed in the cubic form, the tangents of the surface ends are continuously connected without increasing the number of operations more than necessary. The surfaces can be deformed while maintaining the relationship of mechanically joining, and a sufficiently practical three-dimensional graphic representation can be obtained. The effect is that the vector for controlling the differential continuity is retained without being affected by the movement of the points, so that the processing for deforming a curve or surface while maintaining the once set differential continuity is a simple point movement. Is reduced to processing. For example, it is possible to easily obtain the shape in the intermediate process from the final shape of the mold to the intermediate shape by moving the points from the original figure, without the need to make fine adjustments by simply moving the vertices of the surface or curve. Demonstrate power. Further, according to the present invention, it is possible to easily define the parent-child relationship of the graphic elements, and it is possible to easily move the child graphic along the curved surface of the parent graphic, for example. Since each graphic element has reference counting data, when deleting a certain element, refer to the reference counting data to check whether the element is a constituent factor of other elements. Therefore, it is possible to effectively determine whether or not deletion is possible. Furthermore, in an application example such as volume retention deformation, the point to be the driven element is moved by convergence calculation so that the volume becomes constant, but at this time also the differential continuity of the surface is maintained, and the die design for forging is maintained. Etc. are effective.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の3次元CADシステムの機能を示すブ
ロック図である。
FIG. 1 is a block diagram showing functions of a three-dimensional CAD system of the present invention.

【図2】本発明のCADシステムのハード構成を示すブ
ロック図である。
FIG. 2 is a block diagram showing a hardware configuration of a CAD system of the present invention.

【図3】本発明の点データ生成処理の内容を示すフロー
チャートである。
FIG. 3 is a flowchart showing the contents of point data generation processing of the present invention.

【図4】本発明の線データ生成処理の内容を示すフロー
チャートである。
FIG. 4 is a flowchart showing the contents of line data generation processing of the present invention.

【図5】本発明の線描画処理の内容を示すフローチャー
トである。
FIG. 5 is a flowchart showing the contents of line drawing processing of the present invention.

【図6】本発明の面描画処理の内容を示すフローチャー
トである。
FIG. 6 is a flowchart showing the contents of surface drawing processing of the present invention.

【図7】システムのデータ構造を示す説明図である。FIG. 7 is an explanatory diagram showing a data structure of the system.

【図8】親亀図形からのオフッセットを示す説明図であ
る。
FIG. 8 is an explanatory diagram showing offsets from a parent turtle figure.

【図9】親亀図形パラメータの設定を示す説明図であ
る。
FIG. 9 is an explanatory diagram showing setting of parent turtle graphic parameters.

【図10】線分の写像を示す説明図である。FIG. 10 is an explanatory diagram showing mapping of line segments.

【図11】子図形である線分の写像を示す説明図であ
る。
FIG. 11 is an explanatory diagram showing a mapping of a line segment that is a child figure.

【図12】2つの面を連続的にする処理を示す説明図で
ある。
FIG. 12 is an explanatory diagram showing a process of making two surfaces continuous.

【図13】三角面の写像を示す説明図である。FIG. 13 is an explanatory diagram showing mapping of a triangular surface.

【図14】子図形である三角面の写像を示す説明図であ
る。
FIG. 14 is an explanatory diagram showing mapping of a triangular surface which is a child figure.

【図15】子図形である三角面の写像を示す説明図
(2)である。
FIG. 15 is an explanatory diagram (2) showing a mapping of a triangular surface which is a child figure.

【図16】四角面の面内制御点を示す説明図である。FIG. 16 is an explanatory diagram showing in-plane control points of a square surface.

【図17】四角面の面内制御点を示す説明図(2)であ
る。
FIG. 17 is an explanatory diagram (2) showing in-plane control points of a square surface.

【図18】子図形の四角面を示す説明図である。FIG. 18 is an explanatory diagram showing a square surface of a child figure.

【図19】子図形の四角面の内部制御点を示す説明図で
ある。
FIG. 19 is an explanatory diagram showing internal control points on a square surface of a child figure.

【図20】親亀図形パラメータ(a,b)の設定を示す
説明図である。
FIG. 20 is an explanatory diagram showing setting of parent turtle graphic parameters (a, b).

【図21】子図形の線分の制御点を示す説明図である。FIG. 21 is an explanatory diagram showing control points of a line segment of a child figure.

【図22】子図形の線分の制御点を示す説明図(2)で
ある。
FIG. 22 is an explanatory diagram (2) showing a control point of a line segment of a child figure.

【図23】作成例の処理画面を示す説明図(1)であ
る。
FIG. 23 is an explanatory diagram (1) showing a processing screen of a creation example.

【図24】作成例の処理画面を示す説明図(2)であ
る。
FIG. 24 is an explanatory diagram (2) showing a processing screen of a creation example.

【図25】作成例の処理画面を示す説明図(3)であ
る。
FIG. 25 is an explanatory diagram (3) illustrating a processing screen of a creation example.

【図26】作成例の処理画面を示す説明図(4)であ
る。
FIG. 26 is an explanatory diagram (4) showing a processing screen of a creation example.

【図27】作成例の処理画面を示す説明図(5)であ
る。
FIG. 27 is an explanatory diagram (5) showing a processing screen of a creation example.

【図28】作成例の処理画面を示す説明図(6)であ
る。
FIG. 28 is an explanatory diagram (6) illustrating a processing screen of a creation example.

【図29】作成例の処理画面を示す説明図(7)であ
る。
FIG. 29 is an explanatory diagram (7) showing a processing screen of a creation example.

【図30】作成例の処理画面を示す説明図(8)であ
る。
FIG. 30 is an explanatory diagram (8) showing a processing screen of a creation example.

【図31】作成例の処理画面を示す説明図(9)であ
る。
FIG. 31 is an explanatory diagram (9) showing a processing screen of a creation example.

【図32】作成例の処理画面を示す説明図(10)であ
る。
FIG. 32 is an explanatory diagram (10) showing a processing screen of a creation example.

【図33】作成例の処理画面を示す説明図(11)であ
る。
FIG. 33 is an explanatory diagram (11) showing a processing screen of a creation example.

【図34】作成例の処理画面を示す説明図(12)であ
る。
FIG. 34 is an explanatory diagram (12) showing a processing screen of a creation example.

【図35】作成例の処理画面を示す説明図(13)であ
る。
FIG. 35 is an explanatory diagram (13) showing a processing screen of a creation example.

【図36】作成例の処理画面を示す説明図(14)であ
る。
FIG. 36 is an explanatory diagram (14) illustrating a processing screen of a creation example.

【図37】作成例の処理画面を示す説明図(15)であ
る。
FIG. 37 is an explanatory diagram (15) showing a processing screen of a creation example.

【図38】作成例の処理画面を示す説明図(16)であ
る。
FIG. 38 is an explanatory diagram (16) showing a processing screen of a creation example.

【図39】作成例の処理画面を示す説明図(17)であ
る。
FIG. 39 is an explanatory diagram (17) showing a processing screen of a creation example.

【図40】作成例の処理画面を示す説明図(18)であ
る。
FIG. 40 is an explanatory diagram (18) showing a processing screen of a creation example.

【図41】作成例の処理画面を示す説明図(19)であ
る。
FIG. 41 is an explanatory diagram (19) showing a processing screen of a creation example.

【図42】作成例の処理画面を示す説明図(20)であ
る。
FIG. 42 is an explanatory diagram (20) showing a processing screen of a creation example.

【図43】作成例の処理画面を示す説明図(21)であ
る。
FIG. 43 is an explanatory diagram (21) showing a processing screen of a creation example.

【図44】作成例の処理画面を示す説明図(22)であ
る。
FIG. 44 is an explanatory diagram (22) showing a processing screen of a creation example.

【図45】作成例の処理画面を示す説明図(23)であ
る。
FIG. 45 is an explanatory diagram (23) showing a processing screen of a creation example.

【図46】作成例の処理画面を示す説明図(24)であ
る。
FIG. 46 is an explanatory diagram (24) showing a processing screen of a creation example.

【図47】作成例の処理画面を示す説明図(25)であ
る。
FIG. 47 is an explanatory diagram (25) showing a processing screen of a creation example.

【図48】作成例の処理画面を示す説明図(26)であ
る。
FIG. 48 is an explanatory diagram (26) showing a processing screen of a creation example.

【図49】作成例の処理画面を示す説明図(27)であ
る。
FIG. 49 is an explanatory diagram (27) showing a processing screen of a creation example.

【図50】作成例の処理画面を示す説明図(28)であ
る。
FIG. 50 is an explanatory diagram (28) showing a processing screen of a creation example.

【図51】作成例の処理画面を示す説明図(29)であ
る。
FIG. 51 is an explanatory diagram (29) showing a processing screen of a creation example.

【図52】作成例の処理画面を示す説明図(30)であ
る。
FIG. 52 is an explanatory diagram (30) showing a processing screen of a creation example.

【図53】作成例の処理画面を示す説明図(31)であ
る。
FIG. 53 is an explanatory diagram (31) showing a processing screen of a creation example.

【図54】作成例の処理画面を示す説明図(32)であ
る。
FIG. 54 is an explanatory diagram (32) showing a processing screen of a creation example.

【図55】作成例の処理画面を示す説明図(33)であ
る。
FIG. 55 is an explanatory diagram (33) showing a processing screen of a creation example.

【図56】親図形の面積座標計算を示す説明図である。FIG. 56 is an explanatory diagram showing area coordinate calculation of a parent figure.

【符号の説明】[Explanation of symbols]

10…操作解析、処理実行手段、11…点要素生成手
段、12…線要素生成手段、13…面要素生成手段、1
4…立体要素生成手段、15…点移動手段、16…ベク
トル変更手段、17…表示手段、18…データ出力手段
10 ... Operation analysis and processing execution means, 11 ... Point element generation means, 12 ... Line element generation means, 13 ... Surface element generation means, 1
4 ... 3D element generating means, 15 ... Point moving means, 16 ... Vector changing means, 17 ... Displaying means, 18 ... Data outputting means

───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B046 AA05 BA01 CA04 DA08 FA12 FA18 GA01 GA02 HA07 5B050 AA04 BA09 BA18 CA07 EA28 FA02 FA03 FA15 5B080 AA06 AA14 AA15 BA08    ─────────────────────────────────────────────────── ─── Continued front page    F term (reference) 5B046 AA05 BA01 CA04 DA08 FA12                       FA18 GA01 GA02 HA07                 5B050 AA04 BA09 BA18 CA07 EA28                       FA02 FA03 FA15                 5B080 AA06 AA14 AA15 BA08

Claims (5)

【特許請求の範囲】[Claims] 【請求項1】座標情報によって定義される点要素設定手
段と、 前記点要素およびベジェパラメータによって定義される
線要素設定手段と、 少なくとも複数の前記線要素によって定義される面要素
設定手段と、 複数の前記面要素によって定義される立体要素設定手段
と、 設定された複数の前記要素を連接して所望の立体図形を
生成する立体生成手段と、を備えることを特徴とする3
次元CADシステム。
1. A point element setting means defined by coordinate information, a line element setting means defined by the point element and a Bezier parameter, and a surface element setting means defined by at least a plurality of the line elements. 3. A three-dimensional element setting means defined by the surface element, and three-dimensional generation means for connecting a plurality of the set elements to generate a desired three-dimensional figure.
Dimensional CAD system.
【請求項2】前記面要素は、係数がベジェパラメータに
よって表現される面積座標パラメータの総3次形式で表
現されることを特徴とする請求項1に記載の3次元CA
Dシステム。
2. The three-dimensional CA according to claim 1, wherein the surface element is expressed by a total cubic form of area coordinate parameters whose coefficients are expressed by Bezier parameters.
D system.
【請求項3】前記要素は他のいくつの要素から当該要素
が参照されているかを示す参照計数データを持つことを
特徴とする請求項1に記載の3次元CADシステム。
3. The three-dimensional CAD system according to claim 1, wherein the element has reference counting data indicating how many other elements refer to the element.
【請求項4】更に、体積を一定に保持した作成した図形
を変形する体積一定変形手段を備えることを特徴とする
請求項1に記載の3次元CADシステム。
4. The three-dimensional CAD system according to claim 1, further comprising a volume-constant deforming means for deforming a created figure having a constant volume.
【請求項5】座標情報によって定義される点要素設定手
段と、 前記点要素およびベジェパラメータによって定義される
線要素設定手段と、 少なくとも複数の前記線要素によって定義される面要素
設定手段と、 複数の前記面要素によって定義される立体要素設定手段
と、 設定された複数の前記要素を連接して所望の立体図形を
生成する立体生成手段との機能を実現するための3次元
CADシステムのプログラム。
5. A point element setting means defined by coordinate information, a line element setting means defined by the point element and a Bezier parameter, and a surface element setting means defined by at least a plurality of the line elements. A program of a three-dimensional CAD system for realizing the functions of the three-dimensional element setting unit defined by the surface element and the three-dimensional generation unit that connects a plurality of the set elements to generate a desired three-dimensional figure.
JP2001273456A 2001-09-10 2001-09-10 3D CAD system Withdrawn JP2003085220A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001273456A JP2003085220A (en) 2001-09-10 2001-09-10 3D CAD system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001273456A JP2003085220A (en) 2001-09-10 2001-09-10 3D CAD system

Publications (1)

Publication Number Publication Date
JP2003085220A true JP2003085220A (en) 2003-03-20

Family

ID=19098673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001273456A Withdrawn JP2003085220A (en) 2001-09-10 2001-09-10 3D CAD system

Country Status (1)

Country Link
JP (1) JP2003085220A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009116505A (en) * 2007-11-05 2009-05-28 Jtekt Corp Machine tool interference detection device
US7543257B2 (en) 2005-03-29 2009-06-02 Nec Corporation Apparatus for giving assistance in analyzing deficiency in RTL-input program and method of doing the same
JP2010256986A (en) * 2009-04-21 2010-11-11 Toshiba Corp Drawing apparatus and method
JP2012148467A (en) * 2011-01-19 2012-08-09 Seiko Epson Corp Image processor, image processing method, and its program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543257B2 (en) 2005-03-29 2009-06-02 Nec Corporation Apparatus for giving assistance in analyzing deficiency in RTL-input program and method of doing the same
US8191031B2 (en) 2005-03-29 2012-05-29 Nec Corporation Apparatus for giving assistance in analyzing deficiency in RTL-input program and method of doing the same
JP2009116505A (en) * 2007-11-05 2009-05-28 Jtekt Corp Machine tool interference detection device
JP2010256986A (en) * 2009-04-21 2010-11-11 Toshiba Corp Drawing apparatus and method
JP2012148467A (en) * 2011-01-19 2012-08-09 Seiko Epson Corp Image processor, image processing method, and its program

Similar Documents

Publication Publication Date Title
JP3829972B2 (en) 3D CAD system
US7639267B1 (en) Systems and methods for modifying three dimensional geometry using an arbitrary cross-section plane
JP4295752B2 (en) Transformation of computer generated model
JP6196032B2 (en) Generation of surfaces from multiple 3D curves
JP3574202B2 (en) Graphics Input/Output Device
JP2732711B2 (en) Multidimensional information display method and apparatus
JP3599386B2 (en) Edge mixing method
JP2962369B2 (en) Method of operating graphics display system and method of storing data
JP3526605B2 (en) Three-dimensional object deformation method and modeling system
Li Pm4bag: A scriptable parametric modeling interface for conceptual bag design using pm4vr
JP2003085220A (en) 3D CAD system
JPH02132573A (en) Boundary expressing solid modeling system
JP2002024298A (en) Three-dimensional shape processor, three-dimensional shape displaying method, and storage medium stored with program for implementing the same method
JP6603013B2 (en) Folding sheet object design
JP4302102B2 (en) 3D design support program
Wang Robust Geometry Kernel and UI for Handling Non-orientable 2-Mainfolds
US6848082B1 (en) Reactor-based viewport clipping using arbitrary graphical entities
CN115145940B (en) Automatic road drawing method and device
JP3635734B2 (en) 3D articulated structure shape generation method
Alciatore et al. Importing and reshaping digitized data for use in rapid prototyping: a system for sculpting polygonal mesh surfaces
JPH1115994A (en) Surface creation method
Moioli Modeling Inorganic and Organic Objects in Blender
JPH07134779A (en) Sweep body figure generator
JPH0749965A (en) Shape creation support method and apparatus
JPH0668217A (en) Mesh preparation system for numerical analysis

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081202