KR100435258B1 - 컴퓨터 그래픽의 3차원 직선 그리는 방법 - Google Patents
컴퓨터 그래픽의 3차원 직선 그리는 방법 Download PDFInfo
- Publication number
- KR100435258B1 KR100435258B1 KR1019970045599A KR19970045599A KR100435258B1 KR 100435258 B1 KR100435258 B1 KR 100435258B1 KR 1019970045599 A KR1019970045599 A KR 1019970045599A KR 19970045599 A KR19970045599 A KR 19970045599A KR 100435258 B1 KR100435258 B1 KR 100435258B1
- Authority
- KR
- South Korea
- Prior art keywords
- straight line
- value
- dimensional
- slope
- inclination
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
본 발명은 컴퓨터 그래픽의 3차원 직선 그리는 방법을 공개한다. 그 방법은 y=ax+b로 표현된 직선의 기울기(a)가 0인지, 1보다 크거나 같은지, 1보다 작은지를 판단하는 판단단계, 만일 상기 직선의 기울기가 0인 경우에는 직선의 높이를 1로 하고 직선의 양끝점을 제1, 2점으로 하여 그 사이에 점을 그리는 단계, 만일 상기 직선의 기울기가 1보다 크거나 같은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 0.5를 뺀 값을 제1점, 0.5를 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계, 및 상기 직선의 기울기가 1보다 작은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 뺀 값을 제1점, 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계를 구비하여 3차원 직선의 x, y성분을 그린다. 따라서, 3차원 삼각형 그리는 하드웨어를 그대로 이용하여 3차원 직선을 그릴 수 있다.
Description
본 발명은 컴퓨터 그래픽에 관한 것으로, 특히 컴퓨터 그래픽에서 3차원 직선 그리는 방법에 관한 것이다.
컴퓨터의 화면에 직선을 그리는 방법은 여러가지가 있는데, 기본적인 방법은 직선의 방정식 y=ax+b를 이용하여 그 직선이 지나가는 가장 가까운 점들을 화면에 출력하는 것이다. 보통 컴퓨터 엑셀레이터(accelerator)는 시작점의 x, y값과 기울기, 그리고 끝점이 있으면 직선을 그릴 수 있다. 물론 직선의 색깔도 선택할 수 있다.
그러나, 이것은 흔히 말하는 이차원적인 직선일 경우이고 3차원 직선의 경우에는 좌표이외에도 z축을 표시할 수 있는 z값과, 3차원 물체의 표현방식인 쉐이딩(shading)을 지원할 수 있어야 한다. 다시 말해서, 이차원 직선과 3차원 직선의 크게 다른 점은 이차원 직선은 전체가 같은 색깔인데 비해서 3차원 직선은 직선의 각점들이 다른 색이 될 수도 있다는 점과, 두개의 서로 다른 직선이 교차할 경우에 눈에서 가까운 직선의 색이 보여야 한다는 것이다. 서로 다른 색이 되는 경우는 상술한 쉐이딩 방법으로 가능한데, 원래의 색은 같더라도 명암과 빛의 반사등에 의해서 다르게 보이는 것을 표현할 수 있는 경우이다. 두개의 직선이 서로 교차하는 경우에는 직선의 각 점마다 계산되어지는 z값을 비교하여 가장 가까운 점만을 그리도록 해야 한다. 이 방법을 z버퍼를 사용한 히든 표면 제거(hidden sufrace removal)라 한다.
직선을 그리기 위해서는 직선의 기울기를 참조해야 하는데, 기울기가 1보다 큰 경우에는 y축을 중심으로 y가 하나씩 증가할 때에 해당하는 x값을 구해서, 구해진 x, y좌표에 점을 그려 나가면 된다. 반대로 기울기가 1보다 작은 경우에는 하나의 y축에 여러개의 점이 찍히는 경우이기 때문에, x좌표를 하나씩 증가해 가면서 y값을 구하면된다. 만일 3차원 직선인 경우에는 좌표의 계산이외에 색깔의 변화와 z값의 변화등을 고려해야 하므로 이들을 처리하기 위한 별도의 하드웨어가 필요하다.
3차원 물체를 그리는 가장 기본적인 방법은 물체를 삼각형 단위로 모델링하여 처리하는 것인데, 이를 위한 하드웨어가 3차원 그래픽 엑셀레이터(three dimensional graphics accelerator)에 존재한다. 이 하드웨어에는 삼각형 전체를 그리기 위한 좌표 계산, 색깔 계산 등이 모두 포함되어 있으므로 이를 적절히 변형하면 3차원 직선을 그리는 하드웨어를 만들 수 있다.
본 발명의 목적은 3차원 삼각형을 그리는 하드웨어를 이용하여 3차원 직선을 그릴 수 있는 컴퓨터 그래픽의 3차원 직선 그리는 방법을 제공하는데 있다.
이와같은 목적을 달성하기 위한 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법은 y=ax+b로 표현된 직선의 기울기(a)가 0인지, 1보다 크거나 같은지, 1보다 작은지를 판단하는 판단단계, 만일 상기 직선의 기울기가 0인 경우에는 직선의 높이를 1로 하고 직선의 양끝점을 제1, 2점으로 하여 그 사이에 점을 그리는 단계, 만일 상기 직선의 기울기가 1보다 크거나 같은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 0.5를 뺀 값을 제1점, 0.5를 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계, 및 상기 직선의 기울기가 1보다 작은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 뺀 값을 제1점, 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계를 구비하여 3차원 직선의 x, y성분을 그리는 것을 특징으로 한다.
도1은 종래의 3차원 삼각형 그리는 방법을 설명하기 위한 것이다.
도2, 3, 4는 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법을 설명하기 위한 것이다.
이하, 첨부된 도면을 참고로 하여 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법을 설명하기 전에 종래의 3차원 삼각형 그리는 방법을 설명하면 다음과 같다.
삼각형을 그리기 위해서 필요한 것은 세 꼭지점의 좌표(x, y, z)와 색깔 등의 정보가 있으면 된다. 그러나, 이 상태에서는 각 변의 기울기와 x, y의 변화에 따른 z의 변화량, 색깔의 변화량등을 하드웨어로 직접 계산하기 힘들기 때문에 보통의 경우는 이런 기울기에 대한 값을 소프트웨어로 계산한 다음 하드웨어로 넘겨준다.
도1은 종래의 컴퓨터 그래픽의 3차원 삼각형 그리는 방법을 설명하기 위한 것으로, 상술한 방법을 이용하여 삼각형을 그리는 것이다. 삼각형의 내부에 포함된 점들만을 처리하게 되는데, 우선적으로 하드웨어에 프로그램해야 할 값들은, 첫번째 y축(도면에 나타낸 삼각형 내부에서 가장 위쪽에 있는 y축)과 꼭지점 0과 1을 지나는 직선이 만나는 점인 Xs01, 첫번째 y축과 꼭지점 0과 2가 만나는 점인 Xs02, 그리고 이 직선들의 기울기이다. 하드웨어는 Xs01에서 Xs02까지 x를 1씩 증가하면서 점을 그린다. 그 다음 y가 한줄 아래로 내려오고 직선의 기울기에 의해서 새로운 Xs01과 Xs02를 구할 수 있다. 이를 Ycount01만큼 반복하면 삼각형의 윗부분을 모두 그릴 수 있다. 꼭지점 1 아래쪽을 그리기 위해서는 새로운 파라메타(parameter)인 Xs12가 필요하다. 미리 계산된 Xs02의 값은 계속 이용될 수 있다. 마찬가지로 Xs12에서 Xs02까지의 점들을 Ycount12만큼 반복하면 삼각형의 아랫부분을 그릴 수 있다.
상술한 바와 같이 삼각형 그리기는 y축을 중심으로 x방향으로 채워 나간다. 직선을 아주 가느다란 삼각형이라고 생각하면, 삼각형 그리는 하드웨어를 그대로 이용하여 직선을 그릴 수 있다. 그러나, 이 경우에 기울기가 1보다 큰 경우에는 문제가 없으나, 기울기가 1보다 작은 경우에는 문제가 발생한다. y축 하나에 대해서 여러개의 점을 그리려면 이는 상당히 넓은 삼각형을 가정해야만 가능하다. 기울기가 1보다 큰 경우에는 작은 삼각형을 이용하면 중간 중간에 빈 공간이 있는 직선이 그려질 것이다. 이럴 경우에 기준축을 바꾸어서 x축을 하나씩 증가할 때에 변화되는 y값을 찾는 방법이 가장 보편적인 방법이다. 그러나, 이를 위해서는 종래의 하드웨어에 x축을 중심으로 제어할 수 있는 회로가 추가되어야 한다. 그래서, 본 발명에서는 하드웨어의 수정없이 3차원 직선을 그릴 수 있는 방법을 제안한다.
직선을 그리기 위해서는 삼각형을 그리기 위한 파라메타를 모두 사용할 필요가 없고, 그 중에서 Xs01, Xs02, Ycount01만 사용한다. Ycount12는 0로 고정시키면 된다. Ycount01의 값은 직선이 지나가는 y축의 갯수를 단순히 써주면 되고, Xs01과 Xs02의 값은 각 경우별로 다음과 같이 프로그램하면 된다.
도2, 3, 4는 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법을 설명하기 위한 것으로, 직선의 기울기에 따라 3차원 직선을 그리기 위한 파라메타를 결정하는 방법을 설명하기 위한 것이다.
도2는 직선의 기울기가 1보다 큰 경우의 파라메타 결정방법을 설명하기 위한 것으로, Xs01은 x0 0.5, Xs02는 x0 +0.5를 써주어서 직선의 폭이 1이 되게 한다. 여기에서, x0는 가장 윗쪽의 y축과 직선이 만나는 x값이다. 그리고, 각 변의 기울기는 원래 직선의 기울기와 같이 써주면 된다.
도3은 직선의 기울기가 1보다 작은 경우의 파라메타 결정방법을 설명하기 위한 것으로, Xs01은 x0 -(1/2│a│), Xs02는 x0 +(1/2│a│)로 프로그램한다. 이와같이 하면 직선의 폭이 기울기의 역수인 굵은 직선으로 여겨져서 하나의 y축에 여러개의 점을 그릴 수 있게 되어, 중간 중간에 나타내는 점이 없어지는 현상을 방지할 수 있다. 그러나, 이 방법은 기울기가 매우 작아서 직선이 상당히 기울어진 경우에는 시작점과 끝점의 x값을 매우 벗어나는 점까지 찍히는 현상이 발생할 수도 있다는 것이다. 그러나, 이런 현상은 도3에 나타낸 바와 같이 직선을 포함하는 점선으로 그려진 윈도우(window)내부만을 그리도록 하드웨어 클립핑(clipping)을 해서 해결할 수 있다.
도4는 직선의 기울기가 0인 경우의 파라메타 결정방법을 설명하기 위한 것으로, 직선의 기울기가 0이란 것은 Ycount01의 값이 0인 경우를 말하며, 이 경우에는 Ycount01의 값을 1로, Xs01은 x0로, Xs02는 x1로 직선의 양 끝점이 프로그램되도록 한다.
상술한 3차원 직선 그리는 방법을 아래의 식으로 표현할 수 있다.
if Ycount01=0
Ycount01=1; Xs01=x0; Xs02=x1;
else if │a│≥1
Xs01=x0-0.5;
Xs02=x0+0.5;
else if │a│<1
Xs01=x0 -1/(2│a│);
Xs02=x0 +1/(2│a│);
상술한 바와 같이 x, y성분에 대한 직선이 완성된 후 z성분을 고려하여 3차원 직선을 그릴 수 있다.
상술한 바와 같이 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법은 별도의 하드웨어의 추가없이 종래의 3차원 삼각형 그리는 하드웨어를 그대로 사용하여 3차원 직선을 그릴 수 있다.
따라서, 본 발명의 컴퓨터 그래픽의 3차원 직선 그리는 방법은 3차원 삼각형 그리는 하드웨어를 그대로 이용하여 3차원 직선을 그릴 수 있다.
Claims (2)
- y=ax+b로 표현된 직선의 기울기(a)가 0인지, 1보다 크거나 같은지, 1보다 작은지를 판단하는 판단단계;만일 상기 직선의 기울기가 0인 경우에는 직선의 높이를 1로 하고 직선의 양끝점을 제1, 2점으로 하여 그 사이에 점을 그리는 단계;만일 상기 직선의 기울기가 1보다 크거나 같은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 0.5를 뺀 값을 제1점, 0.5를 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계; 및상기 직선의 기울기가 1보다 작은 경우에는 가장 윗쪽의 y축과 직선이 만나는 x값에서 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 뺀 값을 제1점, 1을 상기 기울기의 절대값에 2를 곱한 값으로 나눈 값을 더한 값을 제2점으로 하여 상기 제1값과 제2값사이에 소정수만큼 점을 그리고 상기 직선의 기울기를 따라 y값을 소정값만큼 증가하면서 x축을 따라 상기 소정수만큼 점을 그리는 단계를 구비하여 3차원 직선의 x, y성분을 그리는 것을 특징으로 하는 컴퓨터 그래픽의 3차원 직선 그리는 방법.
- 제1항에 있어서, 상기 직선의 기울기가 1보다 작은 경우에는 직선을 포함하는 윈도우 내부만을 그리는 것을 특징으로 하는 컴퓨터 그래픽의 3차원 직선 그리는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970045599A KR100435258B1 (ko) | 1997-09-03 | 1997-09-03 | 컴퓨터 그래픽의 3차원 직선 그리는 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970045599A KR100435258B1 (ko) | 1997-09-03 | 1997-09-03 | 컴퓨터 그래픽의 3차원 직선 그리는 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990024479A KR19990024479A (ko) | 1999-04-06 |
KR100435258B1 true KR100435258B1 (ko) | 2004-07-16 |
Family
ID=37348771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970045599A KR100435258B1 (ko) | 1997-09-03 | 1997-09-03 | 컴퓨터 그래픽의 3차원 직선 그리는 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100435258B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60193037A (ja) * | 1984-03-15 | 1985-10-01 | Ricoh Co Ltd | 直線描画方式 |
JPH0484375A (ja) * | 1990-07-27 | 1992-03-17 | Ricoh Co Ltd | 画像形成装置 |
US5502801A (en) * | 1993-09-01 | 1996-03-26 | International Business Machines Corporation | Method and system for drawing narrow lines on a computer display |
JPH09161082A (ja) * | 1995-12-07 | 1997-06-20 | Matsushita Electric Ind Co Ltd | 直線描画装置 |
-
1997
- 1997-09-03 KR KR1019970045599A patent/KR100435258B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60193037A (ja) * | 1984-03-15 | 1985-10-01 | Ricoh Co Ltd | 直線描画方式 |
JPH0484375A (ja) * | 1990-07-27 | 1992-03-17 | Ricoh Co Ltd | 画像形成装置 |
US5502801A (en) * | 1993-09-01 | 1996-03-26 | International Business Machines Corporation | Method and system for drawing narrow lines on a computer display |
JPH09161082A (ja) * | 1995-12-07 | 1997-06-20 | Matsushita Electric Ind Co Ltd | 直線描画装置 |
Also Published As
Publication number | Publication date |
---|---|
KR19990024479A (ko) | 1999-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0610004B1 (en) | Image generating apparatus and method of generating an image | |
US5923333A (en) | Fast alpha transparency rendering method | |
US5163126A (en) | Method for adaptively providing near phong grade shading for patterns in a graphics display system | |
KR960016886B1 (ko) | 다수의 3차원 객체로부터 가시 객체를 픽크하는 장치 및 방법과 그를 이용한 비디오 디스플레이 시스템 | |
US5734806A (en) | Method and apparatus for determining graphical object visibility | |
US4924414A (en) | Apparatus and method for obtaining priority numbers for drawing figures forming a display figure | |
EP1125250B1 (en) | Image processing apparatus | |
JPH06203178A (ja) | 画像データ処理方法及び装置 | |
CN101882327B (zh) | 信息处理装置及处理信息的方法 | |
WO2008134147A1 (en) | Edge effect | |
JP4499291B2 (ja) | 3次元コンピュータ生成画像のシェーディング及びテクスチャリング | |
JP2023516934A (ja) | グラフィック処理ユニットレンダリングモード選択システム | |
US5914722A (en) | Memory efficient method for triangle rasterization | |
JP4180043B2 (ja) | 3次元図形描画処理装置、画像表示装置、3次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体 | |
US5786826A (en) | Method and apparatus for parallel rasterization | |
KR100435258B1 (ko) | 컴퓨터 그래픽의 3차원 직선 그리는 방법 | |
JPH09245191A (ja) | 透明度変換方法及びその装置、画像処理装置 | |
KR20010113952A (ko) | 윤곽들을 생성시키는 방법 및 장치 | |
KR100328593B1 (ko) | 3-d 그래픽용 고속 클립핑 방법 | |
KR20030083962A (ko) | 3차원 렌더링 이미지에 쉐이딩 효과를 적용하는 방법 및이를 구현한 프로그램을 저장한 정보저장매체 | |
KR100269118B1 (ko) | 사각형을이용한래스터화방법 | |
KR0180160B1 (ko) | 3차원 물체의 랜더링 방법 | |
JP3718888B2 (ja) | 三次元ポリゴン描画方法および装置 | |
JP4297557B2 (ja) | 3次元画像生成装置および3次元画像生成方法 | |
JPH06203177A (ja) | 画像データ処理方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20070514 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |