KR20070088791A - 3d 래스터화 알고리즘을 사용하여 2d/3d 선을렌더링하는 방법 - Google Patents

3d 래스터화 알고리즘을 사용하여 2d/3d 선을렌더링하는 방법 Download PDF

Info

Publication number
KR20070088791A
KR20070088791A KR1020077016126A KR20077016126A KR20070088791A KR 20070088791 A KR20070088791 A KR 20070088791A KR 1020077016126 A KR1020077016126 A KR 1020077016126A KR 20077016126 A KR20077016126 A KR 20077016126A KR 20070088791 A KR20070088791 A KR 20070088791A
Authority
KR
South Korea
Prior art keywords
isosceles triangle
coordinates
straight line
point
primitive
Prior art date
Application number
KR1020077016126A
Other languages
English (en)
Other versions
KR100897724B1 (ko
Inventor
마이클 휴 앤더슨
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20070088791A publication Critical patent/KR20070088791A/ko
Application granted granted Critical
Publication of KR100897724B1 publication Critical patent/KR100897724B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Abstract

본 특허는 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 일 세트를 컴파일하는 시스템 및 방법을 개시하고 있다. 일 실시형태에서, 3 차원 (3D) 그래픽 가속기는 데이터를 수신할 수도 있다. 그 데이터는 삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의한다. 속성 K2 = (K0+K1)/2 이고, 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 가 이등변 삼각형 프리미티브를 형성한다. 좌표 (x0, y0), 및 (x1, y1) 는 상기 이등변 삼각형 프리미티브의 밑변을 정의한다. 상기 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 상기 세트를 획득하기 위해 3 차원 래스터화 알고리즘을 사용하여 상기 이등변 삼각형 프리미티브가 렌더링될 수도 있다.
그래픽 가속기, 3D, 2D, 래스터화 알고리즘, 이등변 삼각형

Description

3D 래스터화 알고리즘을 사용하여 2D/3D 선을 렌더링하는 방법{2D/3D LINE RENDERING USING 3D RASTERIZATION ALGORITHMS}
배경
기술분야
본 발명은 일반적으로 컴퓨터 그래픽 프로세싱을 포함하며, 더 상세하게는, 디스플레이 점들의 세트가 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트 (graphic object) 의 2 차원 표현을 정의하는 내용을 포함한다.
발명의 배경
오늘날, 애니메이션을 생성하는 것에서부터 워드 프로세싱 및 이메일과 같은 간단한 태스크 (task) 까지, 모든 양태의 컴퓨팅은 다수의 그래픽을 사용하여 사용자를 위한 더 직관적인 작업 환경을 생성한다. 비디오 어댑터는, 개인용 컴퓨터로 플러그인되어, 그래픽 이미지를 디스플레이할 수 있는 능력을 컴퓨터에 부여하는 그래픽 카드이다. 자신의 그래픽 프로세서를 포함하는 비디오 어댑터는 종종 그래픽 가속기라고 지칭된다.
그래픽 가속기는 자기 자신의 메모리 및 프로세서를 포함하기 때문에, 컴퓨터가 디스플레이 스크린 상에 복잡한 이미지를 더 빠르게 디스플레이하게 한다. 그래픽 가속기는 그 프로세서가 컴퓨팅 그래픽 변환을 전문으로 하기 때문에 컴퓨터에 사용되는 범용 CPU (central processing unit) 보다 더 나은 결과를 달성한 다. 또한, 그래픽 가속기는 그래픽 계산을 처리하고 있는 동안에, 컴퓨터 CPU 가 다른 커맨드 (command) 를 자유롭게 실행하게 한다.
컴퓨터의 초창기에, 그래픽은 단지 2-D (2 차원) 그래픽 가속기를 요구하는 2 차원 이미지 즉, 점, 선, 및 면으로 구성되었다. 깊이 (depth) 및 다른 속성 (attribute) 을 나타낼 필요성에 의해 3-D (3 차원) 그래픽 가속기가 개발되게 되었다. 통상적으로 디스플레이 스크린에 부속된 디바이스는 2-D 그래픽 가속기 및 3-D 그래픽 가속기를 포함하며, 여기서 시스템은 필요에 따라 이 2 가지 사이에서 스위칭된다. 그러나, 현재 시중에 팔리고 있는 디바이스는 비용 절감 수단으로서 2-D 그래픽 가속기를 제거하여, 선을 그리는 것을 포함한, 2-D 그래픽 가속기와 3-D 그래픽 가속기의 조합에 의해 이전에 수행되던 모든 태스크를 3-D 그래픽 가속기가 수행하도록 하고 있다.
통상적으로 3-D 그래픽 가속기에 의해 그려진 종래의 선들은 하나의 삼각형이 다른 삼각형의 밑변에 역으로 접하여 매우 길고, 얇은 직사각형을 형성하도록 위치하는 2 개의 동일하고 긴 삼각형으로 구성된다. 종종 삼각형 쿼드 (triangle quad; 사변형) 라고 지칭되는, 이러한 직선은 다수의 사용 목적을 갖는다. 예를 들어, 통상적으로 워드 프로세싱 프로그램 및 인터넷 웹 브라우저 프로그램용 풀-다운 (pull-down) 메뉴는 직선에 의해 경계가 정해지는 텍스트로 구성한다. 셀 전화기 스크린에 디스플레이되는 메뉴 옵션은 직선에 의해 분리되고 경계가 정해지는 텍스트를 포함할 수도 있다. 각진 직선은 디바이스 디스플레이 스크린 상에 표현되는 선반의 스택이나 집의 와이어 프레임 드로잉 (drawing) 에 깊이를 부여하기 위해 다수의 그래픽 애플리케이션을 갖는다.
직선을 그리기 위해 3-D 그래픽 가속기를 이용하는 디바이스의 경우에, 삼각형 쿼드 선의 사용은 컴퓨터 스크린 상의 스크린 공간에서 아날로그 선분 (line segment) 을 디지털로 표현하는 경우에 문제점을 발생시킨다. 예를 들어, 삼각형 쿼드 선을 구성하는 2 개의 삼각형은 각각 3 개의 꼭지점, 전체 6 개의 꼭지점을 갖는다. 이들 6 개의 꼭지점은 6 개의 꼭지점 모두를 렌더링하는데 많은 저장용 메모리 및 많은 프로세싱 시간을 요구한다. 디지털로 표현된 삼각형 쿼드 선은 대응하는 아날로그 선이 두꺼울 필요가 없는 부분에서 두꺼울 수도 있다. 또한, 매우 많은 프로세싱 시간이 삼각형 쿼드 선의 부분으로서 렌더링되지 않을 픽셀을 래스터화하는데 전용된다. 따라서, 당업계에는 기존의 3-D 그래픽 가속기를 이용하여 선분을 렌더링하는데 효율적인 기술이 필요하다.
요약
여기에 개시된 실시형태는 삼각형 프리미티브 (triangle primitive) 의 렌더링이 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 생성하도록, 직선 데이터를 특정 삼각형 프리미티브의 부분으로서 이용하여 전술한 필요성을 해결한다.
일 실시형태에서, 3-D (3 차원) 그래픽 가속기는 데이터를 수신할 수도 있다. 데이터는 삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의할 수도 있다. K2 = (K0+K1)/2 라는 속성과 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 는 이등변 삼각형 프리미티브를 형성한다. 좌표 (x0, y0) 및 (x1, y1) 는 이등변 삼각형 프리미티브의 밑변을 정의한다. 이등변 삼각형 프리미티브는 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 획득하기 위해, 3 차원 래스터화 알고리즘을 사용하여 렌더링될 수도 있다.
도면의 간단한 설명
도 1 은 몇몇 실시형태가 구현될 수도 있는 시스템 (100) 이다.
도 2 는 디스플레이 디바이스 (118) 상의 스크린 공간 내에 직선으로 그려진 모델 공간 직선 (200) 을 나타낸다.
도 3 은 직선 (200) 으로부터 삼각형 프리미티브를 구성하는 방법 (300) 의 흐름도이다.
도 4 는 이등변 삼각형 (400) 의 평면도이다.
도 5 는 직선 (500) 으로 다시 그린 직선 (200) 의 평면도이다.
도 6a 는 수직 위치에서의 직선 (602) 의 평면도이다.
도 6b 는 수평 위치에서의 직선 (606) 의 평면도이다.
도 6c 는 우측 아래로 기울어진 위치에서의 직선 (610) 의 평면도이다.
도 6d 는 좌측 아래로 기울어진 위치에서의 직선 (612) 의 평면도이다.
도 7 은 수학식 35 에서와 같이, 제 3 점 (704) 이 (x2, y2) = (3.90, 2.21) 에 설정된 이등변 삼각형 (702) 의 평면도이다.
도 8 은 이등변 삼각형 프리미티브 (702) 를 전개하는 방법 (800) 이다.
도 9 는 경계 박스 (902) 가 직선 (500) 주위에 위치하는 삼각형 (702) 의 평면도이다.
도 10 은 이등변 삼각형 (702) 의 평면도이다.
도 11 은 몇몇 실시형태가 구현될 수도 있는 컴퓨터 시스템 (1100) 이다.
발명의 상세한 설명
도 1 은 몇몇 실시형태가 구현될 수도 있는 시스템 (100) 이다. 시스템 (100) 은 시스템 프로세서 (102), 시스템 메모리 (104), 키보드와 마우스 같은 입력 디바이스 (106), 및 3D 그래픽 가속기 (108) 를 포함할 수도 있다. 각각은 버스 (110) 를 통해 통신할 수도 있다.
시스템 프로세서 (102) 는 데스크탑 또는 랩탑 컴퓨터와 같은 호스트 컴퓨터, 서버, 게임용 콘솔, 또는 셀룰러 전화기의 CPU (central processing unit) 일 수도 있다. 시스템 메모리 (104) 는 영구 저장 디바이스, 대용량-저장 디바이스, 착탈형 저장 디바이스, 및 RAM (random access memory) 과 같은 휘발성 판독-및-기록 메모리와 같은 다양한 형태의 메모리 리소스를 포함할 수도 있다. 시스템 메모리 (104) 와 함께, 시스템 프로세서 (102) 는 프로그래밍된 명령어를 프로세싱하고 태스크를 수행할 수도 있다.
3D 그래픽 가속기 (108) 는 시스템 (100) 에 빠르고 효율적으로 그래픽 이미지를 디스플레이할 수 있는 능력을 부여할 수도 있다. 예를 들어, 3D 그래픽 가속기 (108) 는 그래픽 계산을 처리하는 동안에 시스템 프로세서 (102) 가 다른 커맨드를 자유롭게 실행하게 할 수도 있다. 3D 그래픽 가속기 (108) 와 함께 드로잉 메모리 (112), 드로잉 프로세서 (114), 및 프레임 버퍼 (116) 가 포함될 수 도 있고, 디스플레이 디바이스 (118) 가 3D 그래픽 가속기 (108) 에 연결될 수도 있다.
드로잉 메모리 (112) 는 시스템 프로세서 (102) 로부터 명령어 및 데이터를 수신하고 드로잉 프로세서 (114) 에 사용되는 명령어 및 데이터를 저장할 수도 있다. 드로잉 프로세서 (112) 는 드로잉 메모리 (112) 내의 데이터 및 명령어를 프로세싱하기 위해 가산기, 승산기, 및 멀티플렉서와 같은 컴포넌트를 포함할 수도 있다. 이 프로세스 동안에, 드로잉 프로세서 (114) 는 저장된 명령어에 따라 데이터를 래스터화할 수도 있다. 일 실시형태에서, 드로잉 메모리 (112) 는 컬러, 깊이, 스텐실 등에 관한 일종의 스크래치 패드로서 기능할 수도 있다.
컴퓨터 스크린 및, 셀 전화기에 사용되는 것과 같은 다른 디스플레이 스크린은 픽셀의 그리드 (또는 어레이) 를 선택적으로 점등함으로써 이미지를 디스플레이할 수도 있다. 이들 비트맵 또는 래스터 이미지는 특정 디스플레이 디바이스 스크린 내의 픽셀 위치에 대한 강도의 세트에 의해 완전히 특정된다. 래스터화 프로세스는 형상으로 구성된 오브젝트-지향 이미지를 비트맵 이미지로 변환하는 것을 포함할 수도 있으며, 여기서 각 비트는 특정 강도로 디스플레이 디바이스 (118) 상의 픽셀을 점등하도록 설계된다. 데이터를 래스터화하기 위해, 드로잉 프로세서 (114) 는 데이터를 로딩하고 분석하여 비트맵을 생성할 수도 있으며, 여기서, 비트맵은 프레임 버퍼 (116) 에 저장될 수도 있다. 비트맵은 디스플레이 디바이스 (118) 상에 디스플레이될 이미지를 비트마다 표현한 파일 또는 이미지 구조일 수도 있다. 또한, 프레임 버퍼 (116) 는 버스 (110) 에 직접 부속될 수도 있 다.
도 2 는 디스플레이 디바이스 (118) 상의 스크린 공간 내에 직선으로 그려진 모델 공간 직선 (200) 을 나타낸다. 직선 (200) 은 시작점 (202) 로부터 종료점 (204) 까지 연장될 수도 있다. 시작점 (202) 은 좌표 (x0, y0, z0) 로 지정될 수도 있고, 종료점 (204) 은 좌표 (x1, y1, z1) 로 지정될 수도 있다. 이 예에서 직선 (200) 은 디스플레이 디바이스 (118) 상의 스크린 공간에 평행한 평면에 있기 때문에, 시작점 (202) 은 좌표 (x0, y0) 로 지정되고, 종료점 (204) 은 좌표 (x1, y1) 로 지정된다.
도 3 은 직선 (200) 으로부터 삼각형 프리미티브를 구성하는 방법 (300) 의 흐름도이다. 도 302 에서, 시스템 프로세서 (102) 는 직선을 생성하고 위치시키는 것에 관한 입력을 수신할 수도 있다. 그 입력은 컴퓨터-지원 드로잉 패키지를 사용하여 비행기 날개의 와이어 프레임 모델을 그리는 사람과 같은 사용자로부터 입력될 수도 있고, 또한 풀다운 메뉴에 관한 선들 중 하나를 그리거나, 셀룰러 전화기의 뷰잉 스크린 상에 표시하는 메일 봉투의 후면도의 아웃라인을 그리거나, 또는 컴퓨터 게임에 표시하는 하나 이상의 선을 그리라는 요청과 같은 애플리케이션 요청으로부터 입력될 수도 있다. 또 다른 방법으로, 도 1 의 입력 디바이스 (106) 는 시스템 프로세서 (102) 에 입력을 전송하는데 사용될 수도 있으며, 여기서, 입력은 직선 (200) 을 생성하고 위치시키는 것에 관한 정보를 포함한다.
단계 304 에서, 시스템 프로세서 (102) 는 수신 입력을 명령어로 변환할 수도 있다. 명령어는 직선 (200) 의 2 개의 종료점의 x, y 좌표가 수반되는 draw_line 과 같은 커맨드를 포함할 수도 있다. 그 선의 시작점은 (x0, y0) 에서와 같이 영 ("0") 으로 지정될 수도 있으며, 그 선의 종료점은 (x1, y1) 에서와 같이 일 ("1") 로 지정될 수도 있다. 통상적으로 삼각형은 좌측-상부의 픽셀부터 래스터화되어, 좌측에서 우측으로 위에서 아래로 이동한다. 래스터화 프로세스가, 제안된 삼각형 내의 임의의 다른 픽셀에 도달하기 전에, 시작점 (x0, y0) 을 포함하는 픽셀에 도달한다면, 그 프로세스는 직선 (200) 의 위치를 결정할 수도 있다.
제안된 삼각형 내의 제 1 픽셀이 시작점 (x0, y0) 이라는 것을 보장하기 위해, 직선 (200) 의 시작점 (x0, y0) 은 직선 (200) 의 종료점일 수도 있으며, 여기서, y0≥y1 이고 x0 은 x-축에 가장 가까운 좌표이다 (x0 ≤ x1). 즉, 시작점은 y 모델 공간 좌표에 관한 최소값을 갖는 종료점일 수도 있고, 2 개의 y 모델 공간 좌표가 동일한 경우, 시작점은 x 모델 공간 좌표에 관한 최소값을 갖는 종료점일 수도 있다.
이 위치에 더하여, 직선 (200) 의 각 종료점은, 확산형 컬러 (diffuse color; 알파("α"), R, G, B) (예를 들어, α, 적색, 녹색, 청색), 반사형 컬러 (specular color; RS, GS, BS), 텍스처 좌표 (u, v), 및 포그 (fog) 와 같은 다른 속성에 의해 정의될 수도 있다. 따라서, 시스템 프로세서 (102) 의 일반적인 명령어는 아래의 커맨드 스트링 1 과 같이 표시할 수도 있으며, 즉
(커맨드 스트링 1)
draw_line (x0, y0, K0, x1, y1, K1)
또는
draw_line (x0, y0, n0α, n0R, n0G, n0B, n0RS, n0GS, n0BS, n0u, n0v, x1, y1, n1α, n1R, n1G, n1B, n1RS, n1GS, n1BS, n1u, n1v)
이다.
마지막 숫자 또는 문자는 특정 속성을 식별할 수도 있다. x, y 위치에 관한 숫자 값은 임의의 숫자일 수도 있고, 나머지 속성에 관한 숫자 값은 0 내지 255 (예를 들어, 0 내지 28) 일 수도 있다. 숫자에 관한 예로서, 명령어는 아래의 커맨드 스트링으로 표시할 수도 있다.
(커맨드 스트링 2)
draw_line (1.51, 2.21, 8α, 240R, 0G, 56B, 23RS, 0GS, 0BS, 4u, 256v, 3.15, 4.48, 45α, 210R, 0G, 7B, 99RS, 180GS, 45BS, 0u, 16v)
커맨드 스트링 2 로부터 그려지는 직선은, 특정된 것과 같이 속성의 숫자 값을 갖는 시작점 (x0, y0) = (1.51, 2.21) 로부터 종료점 (x1, y1) = (3.15, 4.48) 까지의 직선을 수도 있다.
2D 그래픽 가속기는 벡터 그래픽을 통해 커맨드 스트링 2 을 프로세싱하도록 설계될 수도 있다. 그러나, 3D 그래픽 가속기는 종종 프리미티브 (primitive) 라고 지칭되는 아주 작은 기하학적 오브젝트를 프로세싱할 수도 있다. 사변형, 삼각형, N-각형은 프리미티브의 예인 반면에, 선은 프리미티브가 아니다. 기존의 3D 그래픽 가속기는 커맨드 스트링 2 을 직접 프로세싱하도록 설계되지는 않았 다.
디바이스에 2D 그래픽 가속기가 없고 3D 가속기를 포함하는 경우에, 디바이스 스크린 상에 보이는 모든 오브젝트는 실제로 프리미티브로 구성된다. 프리미티브의 경계는 선분으로 구성된다. 프리미티브의 경계인 단지 하나의 선분을 래스터화하는 것은 직선을 생성할 수도 있다. 따라서, 프리미티브를 형성하도록 커맨드 스트링 2 과 함께 정보가 포함된다면, 3D 그래픽 가속기는 프리미티브를 프로세싱하여 커맨드 스트링 2 의 직선에 적합한 직선을 도출할 수 있다.
다양한 프리미티브의 검토 후에, 삼각형 프리미티브는 3D 그래픽 가속기 (108) 에 의해 직선으로 프로세싱하는 양호한 후보라고 여겨진다. 모든 3D 오브젝트는 삼각형으로 나눠질 수도 있지만 삼각형은 삼각형 이외의 다른 것으로 나눠질 수 없다. 3D 공간에서의 삼각형은 또한 2D 공간에서도 삼각형이다. 처리해야할 것이 적기 때문에, 삼각형을 그리는 것은 더 높은 차수의 다각형을 그리는 것보다 훨씬 더 간단할 수도 있다. 이들은 삼각형이 컴퓨터 그래픽에 공통으로 사용되는 이유 중 일부이다.
삼각형은 3 개의 변을 가지고, 따라서 3 개의 점 또는 꼭지점으로 구성된다. 컬러값 (또는 인덱스) 또는 텍스처 인덱스와 같은 다른 정보 이외에, 삼각형의 각각의 꼭지점은 삼각형 점의 좌표를 포함할 수도 있다. 3D 공간에서 정의된 삼각형을 2D (스크린) 공간으로 변환하기 위해, 삼각형의 꼭지점은 3D 로부터 2D 공간으로 투영된 다음 래스터화될 수도 있다.
3D 그래픽 가속기가 단지 프리미티브만을 프로세싱하는 경우에, 3 개의 점이 삼각형 프리미티브를 형성하도록 제 3 점이 예시적인 시작점 (1.51, 2.21) 및 종료점 (3.15, 4.48) 과 함께 제공될 수도 있다. 단계 306 에서, 시스템 프로세서 (102) 는 3 개의 점이 삼각형을 형성하도록 단계 304 의 명령어에 더하여 제 3점을 선택하기 시작할 수도 있다.
삼각형 내에 위치한 픽셀을 래스터화하는 경우에, 삼각형의 꼭지점에 제공된 값들은 각 래스터화된 픽셀에게 가중화된 평균을 반드시 부여한다. 예를 들어, 소정의 픽셀에서 계산된 (및 디스플레이된) 적색은 3 개의 각 꼭지점으로부터 소정의 픽셀까지의 거리 및 각 꼭지점에서의 확산형 적색 (R) 의 속성값에 의해 영향을 받을 수도 있다. 픽셀이 꼭지점에 더 가까울수록, 그 꼭지점의 적색 속성은 그 픽셀에 더 크게 영향을 줄 수도 있다. 픽셀이 꼭지점에서 더 멀리 있을수록, 그 꼭지점의 적색 속성은 그 픽셀에 덜 영향을 줄 수도 있다.
바람직하게는, 직선 (200) 을 따르는 픽셀에 관해 계산된 속성값에는 거의 영향을 미치지 주지 못하도록 제 3 점의 속성값들이 선택된다. 예를 들어, 제 3 점의 속성값이 직선 (200) 의 시작점 및 종료점의 속성값의 평균값으로 선택된다면, 제 3 점의 속성값은 직선 (200) 을 따르는 픽셀에 관해 계산된 속성값에는 거의 영향을 주지 않을 수도 있다. 또한, 제 3 점의 좌표값은 그 위치가 직선 (200) 을 따르는 픽셀에 관해 계산된 속성값에 거의 영향을 주지 않을 수도 있도록 직선 (200) 의 시작점 및 종료점으로부터 등거리에 있어야 한다.
이등변 삼각형은 동일한 길이의 2 개 이상의 변을 갖는 삼각형이다. 2 개의 변에 의해 형성되는 꼭지점은 밑변과 마주본다. 이등변 삼각형의 꼭지점 의 (x2, y2) 좌표는 이등변 삼각형의 밑변의 시작점 (x0, y0) 및 종료점 (x1, y1) 으로부터 등거리에 있다. 또한, 이 꼭지점을 이등분하는 선은 밑변의 중점을 지나가고 밑변에 수직이다. 이러한 선이 밑변의 중점으로부터 발생하여 수직으로 연장되는 경우에, 이는 삼각형의 주연과 넓이를 동시에 이등분하며, "B-선" 이라고 지칭될 수도 있다.
직선 (200) 을 이등변 삼각형 프리미티브로 구성하고, 꼭지점 (x2, y2) 에서의 속성값이 꼭지점 (x0, y0) 및 꼭지점 (x1, y1) 에서의 속성값의 평균이 되도록 선택함으로써, 꼭지점 (x2, y2) 에서의 좌표 및 속성값은 직선 (200) 을 따르는 픽셀에 관해 계산된 속성값에 거의 영향을 주지 않을 수도 있다. 참이라면, 직선은 커맨드 스트링 2 을 상술한 이등변 삼각형에 포함시킴으로써, 커맨드 스트링 2 에 기초하여 3D 그래픽 가속기 (108) 에 의해 그려질 수도 있다. 이에 대한 참은 다음과 같이 수학적으로 나타낼 수도 있다.
도 4 는 이등변 삼각형 (400) 의 평면도이다. 이등변 삼각형 (400) 은 밑변 (402), 변 (404), 변 (406) 을 포함할 수도 있으며, 여기서, 변 (404) 의 길이 "b" 는 변 (406) 의 길이 "b" 와 동일하다. 이등변 삼각형 (400) 은 꼭지점 (408), 꼭지점 (410), 및 꼭지점 (412) 을 더 포함할 수도 있으며, 꼭지점 (412) 은 길이가 "a" 인 밑변 (402) 을 마주보고 있을 수도 있다. 중점 (xm, ym; 414) 은 꼭지점 (408) 과 꼭지점 (410) 사이의 길이 "a" 를 따라 정확히 중간에 있을 수도 있다. 또한, B-선 (416) 은 중점 (414) 로부터 높이 "h" 를 따라서 꼭지점 (412) 로 연장될 수도 있다. 도 4 의 예에서, 밑변 (402) 은 3D 그래픽 가속기 (108) 에 의해 렌더링되고 디스플레이 디바이스 (118) 상에 디스플레이되는 선분일 수도 있다.
이등변 삼각형 (400) 내에 위치한 각 픽셀은 속성 α, R, G, B, RS, GS, BS, u, 및 v 를 포함하여 속성 K 를 가질 수도 있다. 꼭지점 (408), 꼭지점 (410) 및 꼭지점 (412) 각각에서의 속성값은 각각 K0, K1, 및 K2 에 의해 표현될 수도 있다. 따라서, 이등변 삼각형 (400) 내에서, 스크린 공간에서 x, y 위치의 선형 2변수 함수 K 가 존재하며,
(수학식 3)
K(x, y) = (Ak)(x)+(Bk)(y)+Ck
여기서, K = α, R, G, B, RS, GS, BS, u, 및 v 이고, (x,y) 는 하나의 스크린 픽셀에 관한 스크린 공간 좌표를 나타내며, Ak, Bk, 및 Ck 는 선형 계수를 나타낸다.
소정의 x, y 스크린 공간 좌표에 관한 선형 계수 Ak, Bk, Ck 는 꼭지점 (408, 410, 및 412) 과 연관된 수학식에 의해 획득될 수도 있다. 래스터화 알고리즘을 사용하고 소정의 x, y 스크린 공간 좌표에 관한 선형 계수 Ak, Bk, 및 Ck 을 결정함으로써, 특정 픽셀 속성값은 수학식 3 에 따라 대응하는 x, y 스크린 공간 좌표에서 획득될 수도 있다.
선형 계수 Ak, Bk, 및 Ck 에 관해 꼭지점 (408, 410, 412) 과 연관되는 수학식은 다음을 포함하며, 즉,
(수학식 4)
Ak = [(A0)(K0)+(A1)(K1)+(A2)(K2)]/넓이
(수학식 5)
Bk = [(B0)(K0)+(B1)(K1)+(B2)(K2)]/넓이
(수학식 6)
Ck = [(C0)(K0)+(C1)(K1)+(C2)(K2)]/넓이
이고, 여기서, 이등변 삼각형의 넓이는,
(수학식 7)
넓이 = (1/2)(a)(h) = (1/2)(a)[(b^2)-(1/4)(a^2)]^(1/2)
이며, 여기서 선형 계수들은,
(수학식 8)
A0 = y1-y2, A1 = y2-y0, A2 = y0-y1
(수학식 9)
B0 = x2-x1, B1 = x0-x2, B2 = x1-x0
(수학식 10)
C0 = (x1)(y2)-(x2)(y1), C1 = (x2)(y0)-(x0)(y2), C2 = (x0)(y1)-(x1)(y0)
와 같이 표현될 수도 있다.
3 차원 래스터화 알고리즘은 수학식 3, 4, 5 및 6 을 포함한다. 전술한 바와 같이, K2 에 관한 속성값 (예를 들어, 제 3 점에 관한 속성값) 이 K0 및 K1 에 관한 속성값의 평균값으로 선택된다면, K2 의 속성값은 밑변 (402) 을 따르는 픽셀에 관해 계산된 속성값 K(x, y) 에 거의 영향을 주지 않을 수도 있다. 수학적으로, 이는,
(수학식 11)
K2 = (K0+K1)/2
와 같이 표현될 수도 있다.
렌더링용으로 선택된 삼각형이 이등변 삼각형이기 때문에, 수학식 8, 9 및 10 에서 y2 의 값은 y0 및 y1 으로 표현될 수도 있다. 도 4 에서와 같이, x0 = x1 이도록, 이등변 삼각형 (400) 을 배향시킴으로써, y2 는,
(수학식 12)
y2 = (y0+y1)/2
와 같이 간단히 표현될 수도 있다.
상술한 바와 같이,
(수학식 4)
Ak = [(A0)(K0)+(A1)(K1)+(A2)(K2)]/넓이
이고, 수학식 8 을 수학식 4 에 대입하면,
(수학식 13)
Ak = [(y1-y2)(K0)+(y2-y0)(K1)+(y0-y1)(K2)]/넓이
이고, 수학식 11 을 수학식 13 에 대입하면,
(수학식 14)
Ak = [(y1-y2)(K0)+(y2-y0)(K1)+(y0-y1)((K0+K1)/2)]/넓이
이고, 수학식 12 을 수학식 14 에 대입하면,
(수학식 15)
Ak = [(y1-(y0+y1)/2)(K0)+((y0+y1)/2-y0)(K1)+(y0-y1)((K0+K1)/2)]/넓이
이고, 곱하고 나누면,
(수학식 16)
Ak = [(K0)(y1)-0.5(K0)(y0)-0.5(K0)(y1)+0.5(K1)(y0)+0.5(K1)(y1)-(K1)(y0)
+0.5(K0)(y0)-0.5(K0)(y1)+0.5(K1)(y0)-0.5(K1)(y1)]/넓이
이고, 재정렬하면,
(수학식 17)
Ak=[-0.5(K0)(y0)+0.5(K0)(y0)+(K0)(y1)-0.5(K0)(y1)-0.5(K0)(y1)
+0.5(K1)(y0)-(K1)(y0)+0.5(K1)(y0)+0.5(K1)(y1)-0.5(K1)(y1)]/넓이
또는,
(수학식 18)
Ak = [0]/넓이 = 0
이다.
상술한 바와 같이,
(수학식 3)
K(x,y) = (Ak)(x)+(Bk)(y)+Ck
이고, 수학식 18 을 수학식 3 에 대입하면,
(수학식 19)
K(x,y) = (0)(x)+(Bk)(y)+Ck
또는,
(수학식 20)
K(x,y) = (Bk)(y)+Ck
이다.
이등변 삼각형을 이용하여 K2 의 값을 K0 과 K1 의 평균값과 동일하게 설정함으로써, (Ak)(x) 는 수학식 20 에서와 같이, 수학식 3 으로부터 제거되어 K(x,y) 의 값이 단지 y 만의 1변수 함수가 되게 한다. 이는 원하는 결과로서 (x0, y0) 또는 (x1, y1) 으로부터 (x2, y2) 까지의 거리 및 K2 의 속성값은 모두 밑변 (402) 즉, 그려지도록 선택된 선분을 따르는 속성값에 영향을 주지 않는다.
전술한 바와 같이, 시스템 프로세서 (102) 는 3 개의 점이 삼각형을 형성하도록 단계 304 의 명령어에 더하여 단계 306 에서 제 3 점을 선택하기 시작할 수도 있다.
커맨드 스트링 2 로부터와 같이 직선 (200) 의 시작점 (x0, y0)=(1.51, 2.21) 및 종료점 (x1, y1)=(3.15, 4.48) 에 있어서, 직선 (200) 의 중점 (xm, ym) 은,
(수학식 21)
(xm,ym) = ((x1+x0)/2, (y1+y0)/2)
(xm,ym) = (2.33, 3.35) = ((1.51+3.15)/2, (2.21+4.48)/2)
이다.
직선 방정식의 기울기, 시작점 (1.51, 2.21), 및 종료점 (3.15, 4.48) 을 사용하여, 직선 (200) 의 기울기는,
(수학식 22)
m = (y1-y0)/(x1-x0)
1.38 = (2.21-4.48)/(1.51-3.15)
이다.
직선 (200) 의 y 절편 "b" 를 찾기 위해, 일반적인 직선 방정식이 사용될 수도 있으며, 즉,
(수학식 23)
y = mx+b 또는 b = y-mx
b = 2.21-1.38(1.51)
b = 0.12
이다. 기울기 m = 1.38 이라면, 직선 (200) 의 직선 방정식은,
(수학식 24)
y = 1.38x+0.12
이다.
직선 (200) 의 길이 (밑변의 거리) 는,
(수학식 25)
거리 = [(x1-x0)^2+(y1-y0)^2]^(1/2)
2.80 = ((1.51-3.15)^2+(2.21-4.48)^2))^(1/2))
이다.
직선 (200) 의 중점을 지나는 수선의 기울기 m 는 직선 (200) 의 기울기의 음의 역수이며, 여기서 m = 1.38 이다. 따라서, 직선 (200) 의 중점을 지나는 수선의 기울기 m 는 -0.72 (= -(1/1.38)) 이다. 직선 (200) 의 중점을 지나는 수선의 y 절편은 수학식 23 으로부터 찾을 수도 있으며, 3.35 = (-0.072)(2.33)+b 또는 b = 5.03 이다. 따라서, 제 3 점 (x2, y2) 은,
(수학식 26)
y2 = -0.72(x2)+5.03
을 갖는 직선을 따르는 점일 수도 있다.
도 5 는 직선 (500) 으로 다시 그린 직선 (200) 의 평면도이다. 직선 (500) 은 시작점 (502) 과 종료점 (504) 사이에 있으며, 중점 ((xm, ym); 506) 을 포함한다. 선 (508) 은 직선 (200) 의 수직 이등분선으로서 중점 (504) 을 지나도록 위치한다. 전술한 바와 같이, 제 3 점 (x2, y2) 은 수학식 26 에 따른 선, 즉, y2 = -0.72(x2)+5.03 을 따르는 점일 수도 있다. 또한, 래스터화가 도 1 의 디스플레이 디바이스의 좌측-상부 코너로부터 우측에서 좌측으로 위에서 아래로 시작하는 경우에, 래스터화 프로세스가 직선 (500) 의 위치를 결정하게 하는 것이 바람직할 수도 있다. 직선 (500) 의 시작점 (502) 이 어디에 있는지를 결정하는 하나의 방법은 계획된 이등변 삼각형 내에 있는, 래스터화 프로세스에 의해 식별되는 제 1 픽셀이 직선 (500) 의 시작점 (x0, y0) 즉, 점 (502) 과 연관되는 픽셀이 되도록 선 (508) 을 따르는 제 3 점을 선택하는 것이다.
도 6a, 6b, 6c, 및 6d 는 렌더링되는 직선이 위치할 수도 있는 4 가지 가능한 배열을 나타낸다. 도 6a 는 수직 위치에서의 직선 (602) 의 평면도이다. 도 6b 는 수평 위치에서의 직선 (606) 의 평면도이다. 도 6c 는 우측 아래로 기울어진 위치에서의 직선 (610) 의 평면도이다. 도 6d 는 좌측 아래로 기울어진 위치에서의 직선 (612) 의 평면도이다.
도 6a 에서, 직선 (602) 의 시작점 (x0, y0) 의 x 좌표 및 종료점 (x1, y1) 의 x 좌표는 동일하다 (즉, x0 = x1). 여기서, y2 가 직선 (602) 을 수직 이등분하는 직선을 따라 위치한다면, 즉, y2 = (y1+y0)/2 인 경우, 이등변 삼각형이 형성될 수도 있다. 또한, x2 가 직선 (602) 의 시작점 (x0, y0) 의 x 좌표값보다 크다면, 좌측에서 우측, 위에서 아래로의 래스터화 프로세스는 제안된 이등변 삼각형 내의 임의의 다른 픽셀에 도달하기 전에 시작점 (x0, y0) (도 6a 에서의 점 (604)) 과 연관되는 픽셀에 처음으로 도달할 것이다.
래스터화 프로세스는 동작할 넓이를 요구하기 때문에, 다음의 설정에서와 같이 x2 ≠ x0 이다. 도 6a 에서, x0 = x1 이다. x2 = x0 이라면, x0 = x1 = x2 이며, 이에 의해, 직선을 3D 그래픽 가속기 (108) 에 제공하여 프로세싱하게 한다. 삼각형을 프로세싱하는 3D 그래픽 가속기 (108) 는 다음의 이유로 인해 이러한 직선은 프로세싱할 수 없다. x2 = x0 이라면, x0 = x1 = x2 이고 삼각형 프리미티브의 넓이는 0 이다 (즉, h = 0). 넓이가 0 이라면, 이는 수학식 4, 5, 및 6 에 관해 0 으로 나누는 에러를 유발시킬 것이고, 따라서 직선을 임의로 렌더링하지 못하게 한다. 따라서, x2 ≠ x0 이다.
제안된 이등변 삼각형 내의 임의의 다른 픽셀에 도달하기 전에 래스터화 프로세스가 시작점 ((x0, y0); 도 6a 의 시작점 (604)) 과 연관되는 픽셀에 처음으로 도달하게 할 직선 (602) 의 시작점의 x 좌표값보다 x2 가 더 작은 상황이 존재할 수도 있다. 그러나, x2 < x0 에 관해 가능한 x2 값의 결정은 추가적인 계산 시간 및 프로세서 시간을 요구할 수도 있다. 따라서, 바람직하게, 도 6a 에서와 같은 직선을 갖는 시나리오에서 제 3 점의 선택의 부분으로서 x2 는 x0 보다 크다 (즉, x2 > x0).
도 6a 에서와 같은 직선을 갖는 시나리오에서 제 3 점의 선택은 더 개량될 수도 있다. 제 3 점의 x2 좌표가 수학식 4, 5, 및 6 의 넓이 계산이 상대적으로 간단하게 되도록 선택된다면, 이는 프로세싱 시간을 절감하고 따라서 소비전력을 절감할 수도 있다. 전술한 수학식 7 로부터, 이등변 삼각형의 넓이는,
(수학식 7)
넓이 = (1/2)(a)(h)
이다.
여기서, "a" 는 직선 (602) 의 길이일 수도 있고 h 는 직선 (602) 의 중점으로부터 제 3 점까지 연장된 B-선의 길이일 수도 있다. h 가 2/a 와 동일하게 설정되었다면, 넓이는 1 이 될 것이다. 따라서, 전력을 절감하는 1 가지 방법은 넓이를 실제로 계산하지 않고 1 과 동일하게 설정하는 것일 수도 있다.
도 6a 의 직선 (602) 의 길이 "a" 는 y1-y0 과 동일하다. 또한, 도 6a 의 제안된 이등변 삼각형의 높이 "h" 는 x2-x0 과 동일하다. 즉,
(수학식 27)
h = 2/a
라고 하면,
(수학식 28)
x2-x0 = 2/(y1-y0)
또는,
(수학식 29)
x2 = x0+2/(y1-y0)
이다.
이를 요약하면,
(수학식 30)
x0 = x1 이면, x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2
이다.
도 6b 에서, 직선 (602) 의 시작점 (x0, y0) 의 y 좌표 및 종료점 (x1, y1) 의 y 좌표가 동일하다 (또는, y0 = y1). 여기서, x2 가 직선 (602) 을 수직이등분하는 선을 따라 위치한다면 (즉, x2 = (x1+x0)/2 이라면), 이등변 삼각형이 형성될 수도 있다. 또한, y2 가 직선 (602) 의 시작점 (x0, y0) 의 y 좌표값보다 크다면, 좌측에서 우측, 위에서 아래로의 래스터화 프로세스는 제안된 이등변 삼각형 내의 임의의 다른 픽셀에 도달하기 전에 시작점 (x0, y0) (도 6b 에서의 점 (608)) 과 연관되는 픽셀에 처음으로 도달할 것이다. 도 6a 에 대해 사용된 것과 동일한 로직에 따라,
(수학식 31)
y0 = y1 이면, y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2
이다.
도 6c 에서, 직선 (610) 의 시작점 (x0, y0) 의 y 좌표 및 종료점 (x1, y1) 의 y 좌표가 동일하지 않다 (또는, y0 ≠ y1). 또한, x0 < x1 이다. 도 6a 및 도 6b 와 유사하게, 제 3 점 (x2, y2) 이 직선 (610) 을 수직이등분하는 선을 따라 위치한다면, 이등변 삼각형이 형성될 수도 있다. 도 6c 의 점 (612) 를 포함하는 픽셀이 임의의 다른 픽셀보다 먼저 래스터화되도록 보장하기 위해, y2 는 y0 보다 작지 않아야 하고, x2 는 x0 보다 작아야 한다. 즉,
(수학식 32)
y0 ≠ y1 & x0 < x1 이면, y2 ≥ y0 및 x2 ≥ x0
이다.
도 6c 에 배열된 바와 같은 직선에 관해 제안된 이등변 삼각형의 넓이가 전력을 절감하는 방법으로서 상대적으로 간단하게 계산되게 하는 것이 바람직할 수도 있다. 수학식 27 로부터, 이는,
(수학식 27)
h = 2/a
라는 것을 의미한다.
도 5 의 직선 (500) 은 도 6c 의 직선 시나리오에 적합하고 이 제안을 탐구할 좋은 예로서 제공된다.
직선 (200) (직선 500) 의 길이 "a" 가 수학식 25 로부터 2.80 으로 계산되 었다는 것을 상기한다. h = 2/(2.80) 이라면, 이러한 이등변 삼각형의 넓이는 1 이라는 값을 가질 것이다. 또한, 수학식 24 로부터, 직선 (500) 은 직선 방정식 y = 1.38x+0.12 에 의해 정의되고, 직선 (500) 의 수직이등분선 (508) 은 수학식 26 으로부터의 직선 방정식 y2 = -0.72(x2)+5.03 에 의해 정의된다.
h = 2/(2.80), 직선 방정식 y2=-0.72(x2)+5.03, 직선 (500) 의 중점 ((xm, ym) = (2.33, 3.35)) 을 지나는 수선 상의 한 점에 의해 (도 5 참조), (x2, y2) 는 수학식 25 를 사용함으로써 구할 수도 있으며,
(수학식 33)
h = [(x2-xm)^2+(y2-ym)^2]^(1/2)
(수학식 34)
2/(2.80) = [(x2-2.33)^2+(y2-3.35)^2]^(1/2)
와 같이 고쳐 쓸 수 있다.
y2 = -0.72x2+5.03 를 수학식 34 에 대입하면,
(2/(2.80))^2 = (x2-2.33)^2+((-0.72x2+5.03)-3.35)^2
0.51 = (x2-2.33)^2+(-0.72x2+1.68)^2
0.51 = [(x2)^2-4.66x2+5.43]+[0.52(x2)^2-2.42x2+2.82]
0.51 = 1.52(x2)^2-7.08x2+8.25
0 = 1.52(x2)^2-7.08x2+7.74
이고, 양변을 1.52 로 나누면,
0 = (x2)^2-4.66x2+5.09
이고, 이 다항식을 정수로 인수분해하면, 다음의 결과가 획득되며, 즉,
0 = (x2-2.91)(x2-1.75)
x2 = 2.91 또는 x2 = 1.75
이다.
도 6c 에서와 같이 배열된 직선에 관해 x2 ≥ x0 라는 것을 상기한다. 도 5 의 직선 (500) 의 경우에, x0 = 1.51 이다. 따라서, 이 경우에, x2 는 2.91 또는 1.75 일 수도 있다. x2 가 2.91 과 동일하게 설정된다면 (x2 = 2.91), y2 = 2.93 = -0.72(2.91)+5.03 이며,
(수학식 35)
(x2, y2) = (2.33, 2.93)
이다.
계산 전력을 절감하는 또 다른 방법은 도 6c 에서의 배열의 경우에 x2 = x0 또는 y2 = y0 으로 놓는 것이다. y2 = y0 인 도 5 에서의 직선 (200) 의 경우에, x2 는 직선 (508) 의 방정식으로부터 다음과 같이 단순히 계산될 수 있다. 즉,
y2 = 2.21 = -0.72x2+5.03
x2 = 3.90 = (2.21-5.03)/(-0.72)
(x2, y2) = (3.90, 2.21)
이다.
도 6c 에서의 배열에 관해 제 3 점의 좌표 (x2, y2) 의 간단한 계산에 관한 트레이드오프는 도 6c 의 이등변 삼각형의 넓이를 결정하는데 더 많은 계산이 필요하다는 것일 수도 있다. 도 6c 에 관해, 전술한 것은,
(수학식 36)
y0 ≠ y1 및 x0 < x1 이면, y2 ≥ y0 및 x2 ≥ x0 이고, 넓이 = 1 또는 y2 = y0 또는 x2 = x0
와 같이 요약될 수도 있다.
도 7 은 전술한 수학식 35 에서와 같이, (x2, y2) = (3.90, 2.21) 에서 설정된 제 3 점으로 그려진 이등변 삼각형 (702) 의 평면도이다. 이등변 삼각형 (702) 은 시작점 (502) 과 종료점 (504) 사이의 직선 (500) 을 포함한다.
도 6d 에서, 직선 (610) 의 시작점 (x0, y0) 의 y 좌표 및 종료점 (x1, y1) 의 y 좌표는 동일하지 않다 (또는, y0 ≠ y1). 또한, x0 > x1 이다. 도 6c 와 유사하게, 제 3 점 (x2, y2) 이 직선 (614) 을 수직이등분하는 선을 따라 위치하면, 이등변 삼각형이 형성될 수도 있다. 도 6d 의 점 (616) 을 포함하는 픽셀이 임의의 다른 픽셀보다 먼저 래스터화되도록 보장하기 위해, y2 는 ym 보다 더 커야하고, x2 는 xm 보다 더 커야 한다. 즉,
(수학식 37)
y0 ≠ y1 및 x0 > x1 이면, y2 ≥ (y1+y0)/2 및 x2 > (x1+x0)/2
이다.
도 6d 의 직선에서의 프로세싱에 관해 도 6c 의 직선에서와 같이 계산 전력을 절감하기 위해 유사한 선택을 할 수도 있다. 수학식 37 에 더하여, 넓이를 1 로 설정하는 것 (넓이 = 1) 은 넓이를 계산하는 프로세서에 대한 계산 로드를 경감시킬 수도 있지만, 제 3 점 (x2, y2) 의 좌표를 결정하는 프로세서에 대한 계산 로드를 증가시킬 수도 있다. 다른 방법으로, 수학식 37 에 더하여 x2 = x0 으로 설정하거나 y2 = y1 로 설정하는 것은 제 3 점 (x2, y2) 의 좌표를 계산하는 프로세서 상의 계산 로드를 경감시킬 수도 있지만, 넓이를 계산하는 프로세서 상의 계산 로드는 증가시킬 수도 있다. 이는,
(수학식 38)
y0 ≠ y1 이고 x0 > x1 이면, y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 이고, (넓이 = 1 또는 y2 = y1 또는 x2 = x0)
와 같이 요약될 수도 있다.
통상적으로, 도 1 의 시스템 프로세서 (102) 는 삼각형 프리미티브에 관한 제 3 점의 좌표 (x2, y2) 와 삼각형 프리미티브의 넓이 모두를 결정할 수도 있다. 하나의 시스템 프로세서는 삼각형 프리미티브의 제 3 점의 좌표를 계산하는 것보다 삼각형 프리미티브의 넓이를 계산하는 것에 더 효율적일 수도 있고 이런 효율성은 수학식 38 에 관해 넓이 = 1 을 디폴트로 함으로써 이용될 수도 있다. 시스템 프로세서 (102) 는, 단계 302 에서 입력을 수신하여 y0 ≠ y1 이고 x0 > x1 인 3 개의 선을 생성하여 위치시킨다면, 제 1 선에 관해 넓이 = 1 로 하고, 제 2 선에 관해 y2 = y1 로 하고, 제 3 에 관해 x2 = x0 으로 프로그래밍될 수도 있다. 이러한 방법으로, 시스템 프로세서 (102) 는 3 개의 모든 선에 관해 넓이가 1 인 경우보다 더 많은 프로세싱 회로를 이용할 수도 있다.
도 6a 내지 6d 에 관한 수학식은 요약되어 제 3 점 (x2, y2) 의 선택에 관한 다음의 수학식을 포함할 수도 있으며, 즉,
(수학식 30)
x0 = x1 이라면, x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2
(수학식 31)
y0 = y1 이라면, y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2,
(수학식 36)
y0 ≠ y1 및 x0 < x1 이라면, y2 ≥ y0 및 x2 ≥ x0 및 (넓이 = 1 또는 y2 = y0 또는 x2 = x0)
(수학식 38)
y0 ≠ y1 및 x0 > x1 이라면, y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 및 (넓이 = 1 또는 y2 = y1 또는 x2 = x0)
이다.
도 3 의 방법 (300) 에서 시스템 프로세서 (102) 는 3 개의 점이 삼각형을 형성하도록 단계 304 의 명령어에 더하여 단계 306 에서 제 3 점을 선택하기 시작할 수도 있다는 것을 상기한다. 단계 308 에서, 방법 (300) 은 제 3 점 (x2, y2) 의 좌표의 선택을 시작할 수도 있다.
수학식 30, 31, 36 및 38 은 제 3 점 (x2, y2) 의 좌표의 선택에 이용될 수도 있다. 단계 310 에서, 방법 (300) 은 x0 = x1 인지 여부를 결정할 수도 있다. x0 = x1 이라면, 방법 (300) 은 단계 312 에서 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 일 수도 있다. x0 ≠ x1 이라면, 방법 (300) 은 단계 314 에서 y0 = y1 인지 여부를 결정할 수도 있다. y0 = y1 이라면, 방법 (300) 은 단계 316 에서 y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2 라고 할 수도 있다. y0 ≠ y1 이라면, 방법 (300) 은 단계 318 로 진행하여 직선 (500) 의 수직이등분선의 수학식을 도출할 수도 있다. 또한, 방법 (300) 은 단계 314 내지 단계 320 까지 진행할 수도 있다.
단계 320 에서, y0 ≠ y1 이고 방법 300 은 x0 < x1 인지 여부를 결정할 수도 있다. 단계 320 에서 x0 < x1 이라면, 방법 (300) 은 단계 322 에서 y2 ≥ y0 이고 x2 ≥ x0 일 수도 있다. 또한, 단계 324 에서, 방법 (300) 은 넓이 = 1 또는 y2 = y0 또는 x2 = x0 일 수도 있다. 단계 320 에서 x0 이 x1 보다 작지 않다면, 방법 (300) 은 단계 326 로 진행할 수도 있다. 단계 326 에서, y0 ≠ y1 이고, x0 > x1 이다. 단계 328 에서, 방법 (300) 은 y2 > (y1+y0)/2 이고 x2 > (x1+x0)/2 일 수도 있다. 단계 330 에서, 방법 (300) 은 넓이 = 1 또는 y2 = y1 또는 x2 = x0 일 수도 있다.
단계 318, 단계 324, 및 단계 330 으로부터, 방법 (300) 은 단계 332 로 진행할 수도 있다. 단계 332 에서, 방법 (300) 은 단계 318 에서 도출된 직선 방정식 및 단계 324 또는 단계 330 로부터의 적절한 입력을 이용하여 제 3 점의 좌표값 (x2, y2) 을 도출할 수도 있다. 단계 312, 단계 316, 단계 322 로부터의 방법 (300) 은 단계 334 로 진행할 수도 있다. 단계 334 에서, 방법 (300) 은 제 3 점의 좌표값 (x2, y2) 을 저장할 수도 있다.
단계 306 으로부터 진행하는 것에 더하여, 단계 308 에서 제 3 점 (x2, y2) 의 좌표 선택을 시작하기 위해, 방법 (300) 은 또한 단계 306 내지 단계 336 을 진행할 수도 있다. 단계 336 에서, 방법 (300) 은 제 3 점 (x2, y2, K2) 에 관한 속성값 (K2) 을 선택할 수도 있다. 방법 (300) 은, 선택된 속성값은 직선 (200) 을 따르는 픽셀에 관해 계산된 속성값에 거의 영향을 주지 않도록 제 3 점 (x2, y2, K2) 에 관한 속성값 (K2) 을 선택할 수도 있다. 예를 들어, 속성값 (K2) 이 꼭지점 (x2, y2) 에 할당되도록 결정하기 위해, 커맨드 스트링 2 및 수학식 11 의 각 속성의 평균값이 이용될 수도 있다.
(커맨드 스트링 1)
draw_line (x0, y0, K0, x1, y1, K1)
(커맨드 스트링 2)
draw_line (1.51, 2.21, 8α, 240R, 0G, 56B, 23RS, 0GS, 0BS, 4u, 256v, 3.15, 4.48, 45α, 210R, 0G, 7B, 99RS, 180GS, 45BS, 0u, 16v)
(수학식 11)
K2 = (K0+K1)/2
커맨드 스트링 2 로부터의 확산형 컬러 알파 ("α") 평균값은 26.5 (= (8+45)/2). 커맨드 스트링 2 로부터의 확산형 컬러 적색 ("R") 평균값은 275 (= (240+210)/2). 커맨드 스트링 2 로부터의 확산형 컬러 녹색 ("G") 평균값은 0 (= (0+0)/2). 수학식 35 로부터의 좌표를 이용하고 나머지 속성값을 계산함으로써, 제 3 점 (K2) 에 관한 꼭지점 커맨드 스트링은 다음과 같을 수도 있다.
(커맨드 스트링 39)
vertex_K2 (3.90, 2.21, 26.5α, 275R, 0G, 31.5B, 61RS, 90GS, 22.5BS, 2u, 136v)
또 다른 방법으로, 시스템 프로세서 (102) 가 삼각형 (x0, y0, K0), (x1, y1, K1), (x2', y2', K2') 을 정의했던 정보 및 삼각형의 에지를 직선으로 렌더링하라는 요청을 단계 302 에서 수신했다면, K2' 속성값은 K2 = (K0+K1)/2 이도록 K2 를 도출하도록 조정될 수 있다.
단계 338 에서, 방법 (300) 은 단계 336 으로부터 도출된 속성값 (K2) 과 함께 단계 334 로부터의 좌표 (x2, y2) 를 vertex_K2 커맨드 스트링으로 결합할 수도 있다. 또한, 커맨드 스트링 2 과 커맨드 스트링 39 는 도 7 의 이등변 삼각형 (702) 을 구성한다. 단계 340 에서, 방법 (300) 은 단계 304 로부터의 명령어와 vertex_K2 커맨드 스트링을 결합하여 이등변 삼각형 프리미티브를 구성할 수도 있다. 단계 342 에서, 드로잉 프로세서 (114) 는 이등변 삼각형 프리미티브 (702) 를 수신할 수도 있다.
도 8 은 이등변 삼각형 프리미티브 (702) 을 전개하는 방법 (800) 이다. 경계 박스 알고리즘은 도 7 의 이등변 삼각형 프리미티브 (702) 을 렌더링하는데 이용될 수도 있다. 경계 박스 (902) 는 직선 (500) 주위에 위치할 수도 있다. 경계 박스 (902) 는 직선 (500) 의 시작점 (502) 과 종료점 (504) 의 위치에 기초하여 (Xmin, Ymin) 과 (Xmax, Ymax) 를 획득함으로써 위치할 수도 있다. (Xmin, Ymin) 및 (Xmax, Ymax) 는 (x0, y0) 및 (x1, y1) 의 라운딩되고 스케일링된 (rounded scaled) 정수일 수도 있다. 단계 802 에서, 방법 (800) 는 (Xmin, Ymin) 과 (Xmax, Ymax) 를 획득할 수도 있다. 단계 804 에서, 경계 박스 (902) 는 (Xmin, Ymin) 과 (Xmax, Ymax) 를 이용하여 직선 (500) 주위에 위치할 수도 있다.
도 9 는 경계 박스 (902) 가 직선 (500) 주위에 위치하는 삼각형 (702) 의 평면도이다. x 및 y 에 관한 최소값 및 최대값을 라운딩하고 스크린 공간 좌표로 모델 공간 좌표를 스케일링하는 것은 경계 박스 (902) 가 (Xmin, Ymin)(= (15,22); 904) 과 (Xmax, Ymax)(= (32,45); 906) 에 위치하게 한다.
도 9 의 직선 (500) 을 렌더링하는 것은 본질적으로 직선 (500) 이 지나갈 수도 있는 픽셀들을 조명할 수도 있는 보간 프로세스이다. 그러나, 모델 공간 좌표값을 스크린 공간 정수로 라운딩하는 것은 상대적으로 픽셀이 거의 없는 셀 전화기의 스크린과 같은, 특히 낮은 해상도의 디스플레이 스크린 상에서 직선이 계단 모양으로 디스플레이되게 한다 (종종 "재기스 (jaggies)" 라고 지칭함). 따라서, 직선 (500) 이 재기스를 최소화하는 명암 또는 혼색 (shading or blending) 을 제공하도록 지나갈 수도 있는 픽셀 근처의 픽셀을 조명하는 것이 중요할 수도 있다.
도 9 의 이등변 삼각형 (702) 의 내부에, 스크린 공간에서 x,y 의 위치에 대한 선형 함수 K 가 존재하고,
(수학식 3)
K(x, y) = (Ak)(x)+(Bk)(y)+Ck
이며, 여기서, K = α, R, G, B, RS, GS, BS, u, 및 v 이고, (x, y) 는 하나의 스크린 픽셀에 관한 스크린 공간 좌표를 나타내며, Ak, Bk, Ck 는 선형 계수를 나타낸다.
선형 계수 A, B, C 는 3 개의 꼭지점 (502, 504, 및 704) 과 연관되는 수학식 4, 5, 및 6 에 의해 획득될 수도 있다. 계수 A, B, C 를 도출함으로써, 속성값은 수학식 3 에 따라 임의의 원하는 스크린 공간 (x, y) 의 위치에서 획득될 수도 있다.
수학식 3 에 기초하여 픽셀마다 모든 속성값을 평가하는 것은 2 개의 승산기와 2 개의 가산기를 요구하며, 이는 매우 고가의 솔루션이다. 바람직하게, 경계 박스 기반의 알고리즘은 단지 덧셈 ("+") 연산으로 픽셀을 간결한 직선 (500) 으로 렌더링하는데 사용될 수도 있다. 단지 덧셈 연산을 이용하는 1 개의 경계 박스 기반의 알고리즘은 에지 방정식을 이용한다. 삼각형의 3 개의 에지는 에지의 좌측은 음이고 에지의 우측은 양이며 에지 상에서는 0 인 평면 (아핀 (affine)) 함수에 의해 표현될 수도 있으며, 즉,
(수학식 39)
E0(x, y) = (A0)(x)+(B0)(y)+C0
(수학식 40)
E1(x, y) = (A1)(x)+(B1)(y)+C1
(수학식 41)
E2(x, y) = (A2)(x)+(B2)(y)+C2
이다.
전술한 3 개의 수학식 39, 40, 및 41 은 6 개의 곱셈과 6 개의 덧셈 연산을 요구하며, 이는 매우 고가이다. 각 수학식 39, 40, 41 에 관해 점 (x+1, y) 에서 점 (x, y) 을 뺀 것을 평가함으로써, 최종 수학식은 단지 덧셈 연산을 사용한다. 예를 들어, 수학식 39 에 관해,
(수학식 42)
E0(x+1, y) = (A0)(x)+(A0)+(B0)(y)+C0
- E0 (x, y) = -(A0)(x)+ -(B0)(y)- C0
E0(x+1, y)-E0(x, y) = A0
이다.
B0 에 관한 수학식은 유사하게 획득될 수도 있으며, 즉,
(수학식 43)
E0(x, y+1)-E0(x, y) = B0
이다.
즉, 일단 초기 에지 함수 E0, E1, E2 이 픽셀 (Xmin, Ymin) 에 관해 결정되면, x축 양의 방향으로 동일한 수평 스캔-선 상에서 우측에 있는 다음 픽셀에 관한 에지 함수는 A0 를 부가함으로써 획득되거나, y축 양의 방향으로 동일한 수직선 상에서 아래에 있는 다음 픽셀에 관한 에지 함수는 B0 를 부가함으로써 획득될 수도 있으며, 즉,
(수학식 44)
Ei(Xmin, Ymin) = (Ai)(Xmin)+(Bi)(Ymin)+C0 (i = 0, 1, 2)
(수학식 45)
Ei(Xmin+1, Ymin) = Ei+A0 (i = 0, 1, 2)
(수학식 46)
Ei(Xmin, Ymin+1) = Ei+B0 (i = 0, 1, 2)
이다.
또한, 렌더링 프로세스는 추가 수학식을 통해 좌측으로 또는 위로 이동할 수도 있으며, 즉,
(수학식 47)
Ei(Xmin-1, Ymin) = Ei-A0 (i = 0, 1, 2)
(수학식 48)
Ei(Xmin, Ymin-1) = Ei-B0 (i = 0, 1, 2)
이다.
방법 (800) 으로 돌아가서, 방법 (800) 은 단계 806 에서 경계 박스 (902) 의 좌측-상부의 픽셀에서 3 개의 에지 방정식에 관한 초기값을 계산할 수도 있다. 본 예시에서, 경계 박스 (902) 의 좌측-상부의 픽셀은 픽셀 (904) 이다. 수학식 44 은 픽셀 (904) 에서의 3 개의 에지 방정식에 관한 초기값을 계산하는데 이용될 수도 있다.
단계 808 에서, 방법 (800) 은 경계 박스 (902) 의 좌측 상부의 픽셀 (904) 로부터 다음 픽셀 (908) 로 우측을 향해 이동할 수도 있다. 단계 810 에서, 방 법 (800) 은 픽셀에 관한 E0 가 0 과 동일한지 여부를 판정할 수도 있다. 그 픽셀에 관한 E0 가 0 이 아니라면, 방법 (800) 은 단계 812 에서 우측으로의 픽셀로 이동하여 단계 810 으로 돌아갈 수도 있다.
삼각형의 E0 에지가 에지 상에서 0 인 평면 (아핀) 함수에 의해 표현될 수도 있다는 것을 상기한다. E0 = 0 이면, 방법 (800) 은 (x0, y0) 를 포함하는 픽셀에 도달한다. 그 픽셀에 관한 E0 가 0 과 동일하다면, 방법 (800) 은 단계 814 에서 그 픽셀이 직선 (500) 의 시작점 ((x0, y0); 502) 을 포함한다고 결정할 수도 있다. 단계 816 에서, 방법 (800) 은 그 픽셀을 래스터화할 것인지 여부를 결정할 수도 있다.
모든 픽셀이 직선 (500) 에 조명을 제공하는지는 않을 것이다. 일부 픽셀은 명암 또는 혼색을 제공하고, 다른 픽셀은 직선 (500) 의 직접 표시를 제공할 수도 있다. 그러나, 경계 박스 (902) 내의 픽셀의 대다수는 직선 (500) 에 조명을 거의 제공하지 않을 것이고, 따라서 래스터화되지 않을 것이다. 경계 박스 (902) 내의 픽셀을 스킵 (skip) 함으로써, 직선 (500) 이 렌더링되는 속도는 증가될 수도 있다.
도 10 은 이등변 삼각형 (702) 의 평면도이다. 삼각형의 3 개의 에지는 에지의 좌측은 음이고 에지의 우측은 양이며 에지 상에서는 0 인 평면 (아핀 (affine)) 함수에 의해 표현될 수도 있다. 이등변 삼각형 (702) 외부의 픽셀은 음의 부호 "-" 로 나타내고 직선 (500; 에지 E0) 에 관한 이등변 삼각형 (702) 내부의 픽셀은 양의 부호 "+" 로 나타낸다. 이등변 삼각형 (702) 의 에지 E0 주 연 상의 픽셀은 영 "0" 으로 나타낸다. 수학식 39, 40, 및 41 은 각 픽셀의 -, +, 0 을 결정하는데 사용될 수도 있다.
임의의 소정의 수평 또는 수직 스캔 선의 경우에, 영 ("0") 픽셀에 바로 인접한 음의 픽셀 또는 양의 픽셀만이 직선 (500) 에 조명을 제공할 수도 있다. 또한, 경계 (1002) 는 도 10 내에 포함된다. 직선 (500) 의 디스플레이에 잠재적으로 영향을 줄 수도 있는 모든 픽셀은 경계 (1002) 내에 있을 수도 있다. 직선 (500) 의 디스플레이에 잠재적으로 영향을 주지 않을 수도 있는 모든 픽셀은 경계 (1002) 외부에 있을 수도 있다. 직선 (500) 의 효율적인 래스터화는 래스터화를 위해 단지 경계 (1002) 내에 위치하는 픽셀을 평가할 수도 있다.
시작점 (x0, y0) 이 단계 814 에서 위치하는 경우에, 방법 (800) 은 래스터화를 위해 영 ("0") 픽셀에 바로 인접하는 음의 픽셀 및/또는 양의 픽셀을 평가할 수도 있다. 단계 818 에서, 방법 (800) 은 Ei((x0)-1, y0) 의 3 개의 에지 방정식에 관한 값을 계산할 수도 있고, 픽셀을 래스터화할지 여부를 결정할 수도 있다. 단계 820 에서, 방법 (800) 은 Ei(x0, (y0)-1) 의 3 개의 에지 방정식에 관한 값을 계산하여 픽셀을 래스터화할 것인지 여부를 결정할 수도 있다. 단계 822 에서, 방법 (800) 은 Ei((x0)+1, y0) 의 3 개의 에지 방정식에 관한 값을 계산하여 픽셀을 래스터화할 것인지 여부를 결정할 수도 있다.
단계 824 에서, 방법 (800) 은 수평 증가값 f = 0 으로 설정하고 수직 증가값 g = 1 로 설정할 수도 있다. 수평 증가값 f = 0 으로 설정하고 수직 증가값 g = 1 로 설정함으로써, 방법 (800) 은 수직 아래로 하나의 픽셀씩 이동하여 그 픽 셀을 평가할 수도 있다. 방법 (800) 은 단계 826 에서 (x0+f, y0+g) = (x1, y1) 인지 여부를 결정할 수도 있다. (x0+f, y0+g) 이 (x1, y1) 과 동일하다면, 방법 (800) 은 직선 (500) 의 종료점 (504) 을 포함하는 픽셀에 도달하여 단계 854 로 진행한다. (x0+f, y0+g) 이 (x1, y1) 과 동일하지 않다면, 방법 (800) 은 직선 (500) 의 종료점 (504) 을 포함하는 픽셀에 도달하지 않았다.
(x0+f, y0+g) 이 (x1, y1) 과 동일하지 않다면, 방법 (800) 은 단계 828 에서 에지 방정식 Ei(x0+f,y0+g) 에 관한 값이 음, 영, 또는 양인지 여부를 결정할 수도 있다.
에지 방정식 Ei(x0+f, y0+g) 에 관한 값이 음이라면, 방법 (800) 은 단계 830 에서 에지 방정식 Ei(x0+f, y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 832 에서 에지 방정식 Ei(x0+f+1, y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 834 에서 에지 방정식 Ei(x0+f+2,y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다.
단계 836 에서, f = f+1 및 g = g+1 로 설정하고 방법 (800) 은 단계 826 으로 돌아갈 수도 있다.
에지 방정식 Ei(x0+f,y0+g) 에 관한 값이 영이라면, 방법 (800) 은 단계 838 에서 에지 방정식 Ei(x0+f-1, y0+g) 의 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 840 에서 에지 방정식 Ei(x0+f, y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 842 에서 에지 방정식 Ei(x0+f+1, y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다.
단계 844 에서, g = g+1 로 설정하고 방법 (800) 은 단계 826 으로 돌아갈 수도 있다.
에지 방정식 Ei(x0+f,y0+g) 에 관한 값이 양이라면, 방법 (800) 은 단계 846 에서 에지 방정식 Ei(x0+f, y0+g) 의 값을 계산할 수도 있고, 픽셀을 래스터화할지 여부를 결정할 수도 있다. 단계 848 에서, 방법 (800) 은 에지 방정식 Ei(x0+f-1, y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 단계 850 에서, 방법 (800) 은 에지 방정식 Ei(x0+f-2,y0+g) 에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다.
단계 852 에서, f = f-1 및 g = g+1 로 설정하고 방법 (800) 은 단계 826 으로 돌아갈 수도 있다.
단계 826 에서 (x0+f, y0+g) 가 (x1, y1) 과 동일하다면, 래스터화 프로세스는 직선 (500) 의 종료점 (504) 을 포함하는 픽셀에 도달했을 수도 있고, 방법 (800) 은 단계 854 에서 픽셀이 직선 (500) 의 종료점 ((x1, y1); 504) 을 포함한다고 결정할 수도 있다.
방법 (800) 은 단계 856 에서 Ei(x1, y1) 의 3 개의 에지 방정식에 관한 값 을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 858 에서 Ei((x1)-1, y0) 의 3 개의 에지 방정식에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 860 에서 Ei(x1, (y0)+1) 의 3 개의 에지 방정식에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다. 방법 (800) 은 단계 862 에서 Ei((x)+1, y0) 의 3 개의 에지 방정식에 관한 값을 계산할 수도 있고, 그 픽셀을 래스터화할지 여부를 결정할 수도 있다.
방법 (800) 이 소정의 픽셀을 래스터화하지 않기로 결정한다면, 소정의 픽셀에 관한 래스터화 정보는 드로잉 메모리 (112) 에 저장되지 않는다. 방법 (800) 이 소정의 픽셀을 래스터화한다고 결정한다면, 래스터화 정보는 드로잉 메모리 (112) 에 저장될 수도 있다. 저장된 래스터화 정보는 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 컴파일된 세트를 포함할 수도 있다. 본 예시에서, 직선 그래픽 오브젝트는 도 7 의 밑변 (500) 이다.
적절한 픽셀이 완전히 래스터화되고 비트맵 정보가 드로잉 메모리 (112) 에 저장된 경우에, 방법 (800) 은 단계 864 에서 도 1 의 프레임 버퍼 (116) 로 그 비트맵 정보를 전송할 수도 있다. 단계 866 에서, 프레임 버퍼 (116) 는 디스플레이 스크린 (118) 으로 비트맵 정보를 전송할 수도 있으며, 여기서, 모델 공간 선 (500) 의 스크린 공간 직선이 디스플레이될 수도 있다.
전술한 내용에 더하여, 방법 (800) 은 DDA (digital differential analyzer) 알고리즘 및 Bresenahm 의 선 알고리즘과 같은 추가 디바이스-레벨 기술을 이용하 여 래스터 선분의 계단 모양을 스무딩 (smooth) 할 수도 있다. DDA 알고리즘 및 Bresenahm 의 선 알고리즘은 선 경로에 따라 픽셀 강도를 조정하는 것에 기초한다.
삼각형 (702) 의 3 개의 모든 에지를 테스트할 필요는 없다. 테스트하기 전에, 에지 E0 가 삼각형 (702) 의 밑변이라는 것이 공지되어 있고, 따라서 이는 원하는 선이다. 나머지 2 개의 에지는 미리 결정되어 있으며, 따라서, 삼각형 (702) 의 나머지 2 개의 에지에 관한 정보는 공지되어 있다. 에지 E0 를 테스트하는 경우에, 프로세스는 단지 본질적으로 스트래들 (straddle) 의 선이고, 프로세스가 나머지 2 개의 에지를 크로싱하는지 (cross) 여부는 그 프로세스에서 거의 차이가 없을 수도 있다. 나머지 2 개의 에지 중 하나를 크로싱하는 것은 그 프로세스가 선의 종료점에 도달했다는 것을 알리지만, 경계 박스는 이러한 결정을 미리 하는 기술을 제공한다. 따라서, 선을 래스터화하기 위해 단지 에지 E0 을 테스트하는 것만이 필요할 수도 있다.
도 11 은 몇몇 실시형태가 구현될 수도 있는 컴퓨터 시스템 (1100) 이다. 몇몇 실시형태에서, 개시된 기술은 컴퓨터 판독가능 매체에 저장된 명령어 (소프트웨어) 를 실행할 수 있는 컴퓨터에서 구현되고/되거나 그래픽 생성 전용의 하드웨어 디바이스로 하드-코딩될 수도 있다.
컴퓨터 시스템 (1100) 은 버스 (1105), 프로세서 (1110), 시스템 메모리 (1115), 판독전용 메모리 (1120), 영구 저장 디바이스 (1125), 입력 디바이스 (1130), 출력 디바이스 (1135), 및 대체 프로세서 (1140) 를 포함할 수도 있다.
버스 (1105) 는 컴퓨터 시스템 (1100) 의 다수의 내부 디바이스를 통신적으로 연결하는 모든 시스템, 주변기기, 칩셋 버스를 집합적으로 표현할 수도 있다. 예를 들어, 버스 (1105) 는 판독-전용 메모리 (1120), 시스템 메모리 (1115), 및 영구 저장 디바이스 (1125) 와 프로세서 (1110) 를 통신적으로 연결할 수도 있다.
판독-전용-메모리 (ROM; 1120) 는 컴퓨터 시스템의 프로세서 (1110) 및 다른 모듈에 필요할 수도 있는 정적 데이터 및 명령어를 저장할 수도 있다. 한편, 영구 저장 디바이스 (1125) 는 판독-및-기록 메모리 디바이스일 수도 있다. 이 디바이스는 컴퓨터 시스템 (1100) 이 오프되는 경우에도 명령어와 데이터를 저장하는 비-휘발성 메모리 유닛일 수도 있다. 몇몇 실시형태는 (자기 또는 광 디스크 및 이에 대응하는 디스크 드라이브와 같은) 대용량-저장 디바이스를 영구 저장 디바이스 (1125) 로서 이용할 수도 있다. 다른 실시형태는 (플로피 디스크 또는 zip® 디스크, 이에 대응하는 디스크 드라이브와 같은) 착탈형 저장 디바이스를 영구 저장 디바이스 (1125) 로서 이용할 수도 있다.
영구 저장 디바이스 (1125) 와 같이, 시스템 메모리 (1115) 는 판독-및-기록 메모리 디바이스일 수도 있다. 그러나, 저장 디바이스 (1125) 와는 달리, 시스템 메모리는 랜덤 액세스 메모리 (RAM) 와 같은 휘발성 판독-및-기록 메모리일 수도 있다. 시스템 메모리는 프로세서가 동작시에 필요한 명령어 및 데이터의 일부를 저장할 수도 있다.
몇몇 실시형태에서, 여기에 개시된 방법을 수행하는데 필요한 명령어 및/또는 데이터는 시스템 메모리 (1115), 영구 저장 디바이스 (1125), 판독 전용 메모리 (1120) 또는 이들의 임의의 조합물에 저장될 수도 있다. 예를 들어, 다양한 메모리 유닛은 애플리케이션의 명령어 및 이 애플리케이션에 의해 생성되는 그래픽 데이터를 포함할 수도 있다. 몇몇 실시형태에서, 시스템 메모리 (1115) 및/또는 영구 저장 디바이스 (1125) 는 캐시 및/또는 버퍼를 포함할 수도 있다.
이들 다양한 메모리 유닛으로부터, 프로세서 (1110) 는 여기에 개시된 프로세스를 수행하기 위해 실행할 명령어와 프로세싱할 데이터를 검색할 수도 있다. 몇몇 실시형태에서, 프로세서 (1110) 은 온-칩 캐시 (1112) 를 이용하여 프로세서 (1110) 에 의해 최근에 액세스되거나 생성된 데이터를 보유할 수도 있다. 몇몇 실시형태에서, 대체 프로세서 (1140) 는 여기에 개시된 프로세스를 수행하기 위해 명령어를 실행하고 데이터를 프로세싱할 수도 있다.
버스 (1105) 는 또한 입력 디바이스 (1130) 와 출력 디바이스 (1135) 에 연결될 수도 있다. 입력 디바이스 (1130) 는 사용자가 정보를 통신하고 컴퓨터 시스템 (100) 에 대한 커맨드를 선택하게 할 수도 있다. 입력 디바이스 (1130) 는 영숫자 (alphanumeric) 키보드 또는 커서-제어기를 포함할 수도 있다. 출력 디바이스 (1135) 는 컴퓨터 시스템 (1100) 에 의해 생성되는 이미지를 프린트하거나 디스플레이할 수도 있다. 출력 디바이스는 CRT (cathod ray tube) 또는 LCD (liquid crystal display) 와 같은 디스플레이 디바이스와 프린터를 포함할 수도 있다.
도 11 에 도시된 바와 같이, 최종적으로, 버스 (1105) 는 또한 예를 들어, 네트워크 어댑터 (미도시) 를 통해 네트워크 (1165) 로 컴퓨터 시스템 (1100) 을 연결시킬 수도 있다. 이러한 방법으로, 컴퓨터 시스템 (1100) 은 ("LAN" (local area network, "WAN" (wide area network) 또는 인트라넷과 같은) 컴퓨터 네트워크의 일부 또는 (인터넷과 같은) 네트워크들의 네트워크일 수도 있다. 컴퓨터 시스템 (1100) 의 컴포넌트 중 어느 하나 또는 모두가 사용될 수도 있다. 그러나, 당업자는 임의의 다른 시스템 구성이 또한 사용될 수도 있다는 것을 알 것이다.
기존의 3D 그래픽 가속기 루틴의 사용은 선을 생성하는데 필요한 전력을 최소화한다. 이것은 셀 전화기 및 시계와 같은 저전력 리소스 시스템에서 특히 중요하다.
다수의 특정 상세부분에 관해 상세히 설명하였으며, 당업자는 상세부분이 개시물의 범위에서 벗어나지 않고 다른 특정 형태로 실시될 수도 있다는 것을 인식할 것이다. 따라서, 당업자는 개시된 상세부분이 전술한 예시적인 상세부분에 의해 제한되지 않고, 오히려 첨부된 특허청구범위에 의해 정의되어야 함을 알 수 있다.
당업자는 다양한 서로 다른 기술 및 기법을 이용하여 정보 및 신호를 표현할 수도 있음을 알 수 있다. 예를 들어, 상기의 설명 전반에 걸쳐 참조될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자계 또는 자성 입자, 광계 또는 광자, 또는 이들의 임의의 결합으로 나타낼 수도 있다.
또한, 당업자는 여기에서 개시된 실시형태들과 관련하여 설명된 다양한 예시 적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들을 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 결합으로 구현할 수도 있다는 것을 알 수 있다. 하드웨어와 소프트웨어의 이러한 대체 가능성을 분명히 설명하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들을 주로 그들의 기능의 관점에서 상술하였다. 그러한 기능이 하드웨어로 구현될지 소프트웨어로 구현될지는 전체 시스템에 부과된 특정한 애플리케이션 및 설계 제약조건들에 의존한다. 당업자는 설명된 기능을 각각의 특정한 애플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 그러한 구현의 결정이 본 발명의 범주를 벗어나도록 하는 것으로 해석하지는 않아야 한다. 또한, 방법 단계는 본 개시물의 범위에서 벗어나지 않고 교환될 수도 있다.
여기에서 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 기타 프로그래머블 로직 디바이스, 별도의 게이트 또는 트랜지스터 로직, 별도의 하드웨어 컴포넌트들, 또는 여기서 설명된 기능을 수행하도록 설계되는 이들의 임의의 결합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다른 방법으로, 그 프로세서는 임의의 종래 프로세서, 제어기, 마이크로 제어기, 또는 상태 기계일 수도 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 결합, 예를 들어, DSP 와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들 또는 임의의 기타 다른 구성물로 구현될 수 도 있다.
여기에 개시된 실시형태들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 그 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
개시되어 있는 실시형태들에 대한 상기의 설명은 당업자로 하여금 본 발명을 제조 또는 이용할 수 있도록 제공된다. 당업자는 이들 실시형태에 대한 다양한 변형들을 명백히 알 수 있으며, 여기에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위를 벗어나지 않고도 다른 실시형태들에 적용될 수도 있다. 따라서, 본 발명은 여기에서 설명된 실시형태들에 제한되는 것이 아니라, 여기에서 개시된 원리 및 신규한 특징들과 부합하는 최광의 범위를 부여하려는 것이다.

Claims (26)

  1. 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 컴파일하는 방법을 수록하는 컴퓨터 판독가능 매체로서,
    상기 방법은,
    삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의하는 데이터를 수신하는 단계로서, 속성 K2 = (K0+K1)/2 이고, 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 가 이등변 삼각형 프리미티브를 형성하며, 좌표 (x0, y0), 및 (x1, y1) 는 상기 이등변 삼각형 프리미티브의 밑변을 정의하는, 상기 수신 단계; 및
    상기 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 상기 세트를 획득하기 위해 3 차원 래스터화 알고리즘을 사용하여 상기 이등변 삼각형 프리미티브를 렌더링하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  2. 제 1 항에 있어서,
    좌표 (x0, y0) 및 속성 (K0) 를 갖는 시작점과 좌표 (x1, y1) 및 속성 (K1) 을 갖는 종료점을 포함하고 직선을 정의하는 데이터를 수신하는 단계;
    K2 = (K0+K1)/2 인, 좌표 (x2, y2) 를 갖는 제 3 점에 관한 속성 (K2) 을 선택하는 단계; 및
    상기 이등변 삼각형 프리미티브를 형성하도록 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하는 단계를 더 포함하는, 컴퓨터 판독가능 매체.
  3. 제 2 항에 있어서,
    y0 ≠ y1 이라면, 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하는 단계는 상기 밑변을 수직이등분하는 선의 수학식을 도출하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  4. 제 1 항에 있어서,
    x0 = x1 이면, x2 및 y2 는 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 로 정의되는, 컴퓨터 판독가능 매체.
  5. 제 1 항에 있어서,
    y0 = y1 이면, x2 및 y2 는 y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2 로 정의되는, 컴퓨터 판독가능 매체.
  6. 제 1 항에 있어서,
    상기 이등변 삼각형 프리미티브는 넓이를 정의하고, y0 ≠ y1 및 x0 < x1 이면, x2 및 y2 는 y2 ≥ y0 및 x2 ≥ x0 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y0, 및 x2 = x0 중 하나에 의해 정의되는, 컴퓨터 판독가능 매체.
  7. 제 1 항에 있어서,
    상기 이등변 삼각형 프리미티브는 넓이를 정의하고, y0 ≠ y1 및 x0 > x1 이면, x2 및 y2 는 y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y1, 및 x2 = x0 중 하나에 의해 정의되는, 컴퓨터 판독가능 매체.
  8. 제 1 항에 있어서,
    상기 기본 이등변 삼각형 프리미티브를 렌더링하는 단계는
    시작점 (x0, y0) 을 포함하는 픽셀을 위치시키는 단계,
    수평 증가값 f = 0 및 수직 증가값 g = 1 로 설정하는 단계, 및
    (x0+f, y0+g) = (x1, y1) 인지 여부를 결정하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  9. 제 8 항에 있어서,
    (x0+f, y0+g) ≠ (x1, y1) 이라면, 상기 이등변 삼각형 프리미티브를 렌더링하는 단계는 E0 = 0 인 픽셀, E0 = 0 인 픽셀의 바로 좌측에 위치한 픽셀, 및 E0 = 0 인 픽셀의 바로 우측에 위치한 픽셀에 관한 에지 방정식 E0 의 값을 계산하는 단계를 더 포함하는, 컴퓨터 판독가능 매체.
  10. 제 9 항에 있어서,
    상기 이등변 삼각형 프리미티브를 렌더링하는 단계는 E0 = 0 인 픽셀, E0 = 0 인 픽셀의 바로 좌측에 위치한 픽셀, 및 E0 = 0 인 픽셀의 바로 우측에 위치한 픽셀을 래스터화할지 여부를 결정하는 단계를 더 포함하는, 컴퓨터 판독가능 매체.
  11. 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 컴파일하는 디바이스로서,
    삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의하는 데이터를 수신하도록 구성된 드로잉 메모리를 갖는 3 차원 그래픽 가속기로서, 속성 K2 = (K0+K1)/2 이고, 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 가 이등변 삼각형 프리미티브를 형성하며, 좌표 (x0, y0), 및 (x1, y1) 는 상기 이등변 삼각형 프리미티브의 밑변을 정의하는, 상기 3 차원 그래픽 가속기를 포함하며;
    상기 3 차원 그래픽 가속기는 상기 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 상기 세트를 획득하기 위해 3 차원 래스터화 알고리즘을 사용하여 상기 이등변 삼각형 프리미티브를 렌더링하도록 구성된 드로잉 프로세서를 더 갖는, 컴파일용 디바이스.
  12. 제 11 항에 있어서,
    좌표 (x0, y0) 및 속성 (K0) 을 갖는 시작점과 좌표 (x1, y1) 및 속성 (K1) 을 갖는 종료점을 포함하고 직선을 정의하는 데이터를 수신하고,
    K2 = (K0+K1)/2 인, 좌표 (x2, y2) 를 갖는 제 3 점에 관한 속성 (K2) 을 선택하고, 그리고,
    상기 이등변 삼각형 프리미티브를 형성하도록 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하도록 구성되는 시스템 프로세서를 더 포함하는, 컴파일용 디바이스.
  13. 제 12 항에 있어서,
    상기 밑변을 직선 그래픽 오브젝트로서 디스플레이하도록 구성된 디스플레이 디바이스를 더 포함하는, 컴파일용 디바이스.
  14. 제 11 항에 있어서,
    x0 = x1 이면, x2 및 y2 는 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 로 정의되는, 컴파일용 디바이스.
  15. 제 11 항에 있어서,
    y0 = y1 이면, x2 및 y2 는 y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2 로 정의되는, 컴파일용 디바이스.
  16. 제 11 항에 있어서,
    상기 이등변 삼각형 프리미티브는 넓이를 정의하고, y0 ≠ y1 및 x0 < x1 이면, x2 및 y2 는 y2 ≥ y0 및 x2 ≥ x0 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y0, 및 x2 = x0 중 하나에 의해 정의되는, 컴파일용 디바이스.
  17. 제 11 항에 있어서,
    상기 이등변 삼각형 프리미티브는 넓이를 정의하고, y0 ≠ y1 및 x0 > x1 이면, x2 및 y2 는 y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y1, 및 x2 = x0 중 하나에 의해 정의되는, 컴파일용 디바이스.
  18. 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 컴파일하는 디바이스로서,
    삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의하는 데이터를 수신하는 수단으로서, 속성 K2 = (K0+K1)/2 이고, 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 가 이등변 삼각형 프리미티브를 형성하며, 좌표 (x0, y0), 및 (x1, y1) 는 상기 이등변 삼각형 프리미티브의 밑변을 정의하는, 상기 수신 수단; 및
    상기 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 상기 세트를 획득하기 위해 3 차원 래스터화 알고리즘을 사용하여 상기 이등변 삼각형 프리미티브를 렌더링하는 수단을 포함하는, 컴파일용 디바이스.
  19. 제 18 항에 있어서,
    좌표 (x0, y0) 및 속성 (K0) 을 갖는 시작점과 좌표 (x1, y1) 및 속성 (K1) 을 갖는 종료점을 포함하고 직선을 정의하는 데이터를 수신하고,
    K2 = (K0+K1)/2 인, 좌표 (x2, y2) 를 갖는 제 3 점에 관한 속성 (K2) 을 선택하고, 그리고,
    상기 이등변 삼각형 프리미티브를 형성하도록 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하도록 구성되는 시스템 프로세서를 더 포함하는, 컴파일용 디바이스.
  20. 제 18 항에 있어서,
    상기 수신 수단은 드로잉 메모리인, 컴파일용 디바이스.
  21. 제 18 항에 있어서,
    상기 렌더링 수단은 드로잉 프로세서인, 컴파일용 디바이스.
  22. 제 11 항에 있어서,
    (ⅰ) x0 = x1 이면, x2 및 y2 는 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 로 정의되고,
    (ⅱ) y0 = y1 이면, x2 및 y2 는 y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2 로 정의되고,
    (ⅲ) y0 ≠ y1 및 x0 < x1 이면, 상기 이등변 삼각형 프리미티브는 넓이를 정의하고, x2 및 y2 는 y2 ≥ y0 및 x2 ≥ x0 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y0, 및 x2 = x0 중 하나에 의해 정의되고,
    (ⅳ) y0 ≠ y1 및 x0 > x1 이면, 상기 이등변 삼각형 프리미티브는 넓이를 정의하고, x2 및 y2 는 y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y1, 및 x2 = x0 에 의해 정의되는, 컴파일용 디바이스.
  23. 3 차원 래스터화 알고리즘을 사용하여 직선 그래픽 오브젝트의 2 차원 표현을 정의하는 디스플레이 점들의 세트를 컴파일하는 방법으로서,
    삼각형 프리미티브의 3 개의 꼭지점 (x0, y0, K0), (x1, y1, K1), 및 (x2, y2, K2) 을 정의하는 데이터를 수신하는 단계로서, 속성 K2 = (K0+K1)/2 이고, 좌표 (x0, y0), (x1, y1), 및 (x2, y2) 가 이등변 삼각형 프리미티브를 형성하며, 좌표 (x0, y0), 및 (x1, y1) 는 상기 이등변 삼각형 프리미티브의 밑변을 정의하는, 상기 데이터 수신 단계; 및
    상기 이등변 삼각형 프리미티브의 밑변의 2 차원 표현을 정의하는 디스플레이 점들의 상기 세트를 획득하기 위해 3 차원 래스터화 알고리즘을 사용하여 상기 이등변 삼각형 프리미티브를 렌더링하는 단계을 포함하는, 컴파일 방법.
  24. 제 1 항에 있어서,
    좌표 (x0, y0) 및 속성 (K0) 을 갖는 시작점과 좌표 (x1, x2) 및 속성 (K1) 을 갖는 종료점을 포함하고 직선을 정의하는 데이터를 수신하는 단계;
    K2 = (K0+K1)/2 인, 좌표 (x2, y2) 를 갖는 제 3 점에 관한 속성 (K2) 을 선택하는 단계; 및
    상기 이등변 삼각형 프리미티브를 형성하도록 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하는 단계를 더 포함하며,
    y0 ≠ y1 이면, 상기 제 3 점에 관한 좌표 (x2, y2) 를 선택하는 단계는 상기 밑변을 수직이등분하는 선의 수학식을 도출하는 단계를 포함하는, 컴파일 방법.
  25. 제 23 항에 있어서,
    x0 = x1 이면, x2 및 y2 는 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 로 정의되는, 컴파일 방법.
  26. 제 1 항에 있어서,
    (ⅰ) x0 = x1 이면, x2 및 y2 는 x2 = x0+2/(y1-y0) 및 y2 = (y1+y0)/2 로 정의되고,
    (ⅱ) y0 = y1 이면, x2 및 y2 는 y2 = y0+2/(x1-x0) 및 x2 = (x1+x0)/2 로 정의되고,
    (ⅲ) y0 ≠ y1 및 x0 < x1 이면, 상기 이등변 삼각형 프리미티브는 넓이를 정의하고, x2 및 y2 는 y2 ≥ y0 및 x2 ≥ x0 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y0, 및 x2 = x0 중 하나에 의해 정의되고,
    (ⅳ) y0 ≠ y1 및 x0 > x1 이면, 상기 이등변 삼각형 프리미티브는 넓이를 정의하고, x2 및 y2 는 y2 > (y1+y0)/2 및 x2 > (x1+x0)/2 로 정의되며, 넓이, x2, 및 y2 중 하나는 넓이 = 1, y2 = y1, 및 x2 = x0 중 하나에 의해 정의되는, 컴파일 방법.
KR1020077016126A 2004-12-21 2005-12-20 3d 래스터화 알고리즘을 사용하여 2d/3d 선을렌더링하는 방법 KR100897724B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/019,719 2004-12-21
US11/019,719 US7362325B2 (en) 2004-12-21 2004-12-21 2D/3D line rendering using 3D rasterization algorithms

Publications (2)

Publication Number Publication Date
KR20070088791A true KR20070088791A (ko) 2007-08-29
KR100897724B1 KR100897724B1 (ko) 2009-05-18

Family

ID=36499404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077016126A KR100897724B1 (ko) 2004-12-21 2005-12-20 3d 래스터화 알고리즘을 사용하여 2d/3d 선을렌더링하는 방법

Country Status (8)

Country Link
US (1) US7362325B2 (ko)
EP (1) EP1828988A2 (ko)
JP (1) JP4699480B2 (ko)
KR (1) KR100897724B1 (ko)
CN (1) CN101116111B (ko)
CA (1) CA2590658A1 (ko)
TW (1) TW200634663A (ko)
WO (1) WO2006069310A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100941029B1 (ko) * 2008-02-27 2010-02-05 에이치기술(주) 그래픽 가속기 및 그래픽 가속 방법

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003058483A1 (en) 2002-01-08 2003-07-17 Seven Networks, Inc. Connection architecture for a mobile network
US7853563B2 (en) 2005-08-01 2010-12-14 Seven Networks, Inc. Universal data aggregation
US7917468B2 (en) 2005-08-01 2011-03-29 Seven Networks, Inc. Linking of personal information management data
US8468126B2 (en) 2005-08-01 2013-06-18 Seven Networks, Inc. Publishing data in an information community
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8768642B2 (en) 2003-09-15 2014-07-01 Nvidia Corporation System and method for remotely configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8010082B2 (en) 2004-10-20 2011-08-30 Seven Networks, Inc. Flexible billing architecture
WO2006045102A2 (en) 2004-10-20 2006-04-27 Seven Networks, Inc. Method and apparatus for intercepting events in a communication system
US7706781B2 (en) 2004-11-22 2010-04-27 Seven Networks International Oy Data security in a mobile e-mail service
FI117152B (fi) 2004-12-03 2006-06-30 Seven Networks Internat Oy Sähköpostiasetusten käyttöönotto matkaviestimelle
US7877703B1 (en) * 2005-03-14 2011-01-25 Seven Networks, Inc. Intelligent rendering of information in a limited display environment
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
US7796742B1 (en) 2005-04-21 2010-09-14 Seven Networks, Inc. Systems and methods for simplified provisioning
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US8069166B2 (en) 2005-08-01 2011-11-29 Seven Networks, Inc. Managing user-to-user contact with inferred presence information
US7769395B2 (en) 2006-06-20 2010-08-03 Seven Networks, Inc. Location-based operations and messaging
US8482567B1 (en) * 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8693494B2 (en) 2007-06-01 2014-04-08 Seven Networks, Inc. Polling
KR100917887B1 (ko) * 2007-06-11 2009-09-16 삼성전자주식회사 라인 가속 기능을 지원하는 그래픽 처리 방법 및 장치
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8364181B2 (en) 2007-12-10 2013-01-29 Seven Networks, Inc. Electronic-mail filtering for mobile devices
US8793305B2 (en) 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8107921B2 (en) 2008-01-11 2012-01-31 Seven Networks, Inc. Mobile virtual network operator
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
FR2927449B1 (fr) * 2008-02-11 2010-03-26 Newscape Technology Trace de lignes polygonales
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US8078158B2 (en) 2008-06-26 2011-12-13 Seven Networks, Inc. Provisioning applications for a mobile device
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US8269775B2 (en) * 2008-12-09 2012-09-18 Qualcomm Incorporated Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware
JP5151946B2 (ja) * 2008-12-09 2013-02-27 富士通株式会社 描画装置
CN101753767B (zh) * 2008-12-15 2013-02-27 富士通株式会社 用在图形光栅扫描中的凸多边形遍历方法和系统
US20100164971A1 (en) * 2008-12-29 2010-07-01 Celio Technology Corporation Graphics processor
US8217962B2 (en) * 2009-01-29 2012-07-10 Microsoft Corporation Single-pass bounding box calculation
CN102004710A (zh) * 2009-09-01 2011-04-06 辉达公司 用于扩展便携式多媒体设备功能的方法和装置
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
TW201209697A (en) 2010-03-30 2012-03-01 Michael Luna 3D mobile user interface with configurable workspace management
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
PL3407673T3 (pl) 2010-07-26 2020-05-18 Seven Networks, Llc Koordynacja ruchu w sieci komórkowej pomiędzy różnymi aplikacjami
CA2806557C (en) 2010-07-26 2014-10-07 Michael Luna Mobile application traffic optimization
GB2495877B (en) 2010-07-26 2013-10-02 Seven Networks Inc Distributed implementation of dynamic wireless traffic policy
CN101968713B (zh) * 2010-10-09 2012-07-25 宁波新然电子信息科技发展有限公司 显示界面三维切换控制方法
CN102024247B (zh) * 2010-10-09 2012-07-18 宁波新然电子信息科技发展有限公司 用于实现新老显示界面切换的控制方法
US8190701B2 (en) 2010-11-01 2012-05-29 Seven Networks, Inc. Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
WO2012060996A2 (en) 2010-11-01 2012-05-10 Michael Luna Caching adapted for mobile application behavior and network conditions
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
US8166164B1 (en) 2010-11-01 2012-04-24 Seven Networks, Inc. Application and network-based long poll request detection and cacheability assessment therefor
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8326985B2 (en) 2010-11-01 2012-12-04 Seven Networks, Inc. Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
GB2495463B (en) 2010-11-22 2013-10-09 Seven Networks Inc Aligning data transfer to optimize connections established for transmission over a wireless network
WO2012071384A2 (en) 2010-11-22 2012-05-31 Michael Luna Optimization of resource polling intervals to satisfy mobile device requests
GB2501416B (en) 2011-01-07 2018-03-21 Seven Networks Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
WO2012149221A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US8621075B2 (en) 2011-04-27 2013-12-31 Seven Metworks, Inc. Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
CN102737410B (zh) * 2011-05-06 2017-09-12 新奥特(北京)视频技术有限公司 一种三维图元在二维图文编播系统中的显示方法和装置
EP2737742A4 (en) 2011-07-27 2015-01-28 Seven Networks Inc AUTOMATIC PRODUCTION AND DISTRIBUTION OF GUIDELINES INFORMATION ON MOBILE MOBILE TRANSPORT IN A WIRELESS NETWORK
EP2789138B1 (en) 2011-12-06 2016-09-14 Seven Networks, LLC A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
CN103999443B (zh) * 2011-12-07 2017-08-15 英特尔公司 基于线性化5d边缘方程的样本剔除
US9277443B2 (en) 2011-12-07 2016-03-01 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
EP2788889A4 (en) 2011-12-07 2015-08-12 Seven Networks Inc FLEXIBLE AND DYNAMIC INTEGRATION SCHEMES OF A TRAFFIC MANAGEMENT SYSTEM WITH VARIOUS NETWORK OPERATORS TO REDUCE NETWORK TRAFFIC
US8861354B2 (en) 2011-12-14 2014-10-14 Seven Networks, Inc. Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
US9832095B2 (en) 2011-12-14 2017-11-28 Seven Networks, Llc Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
EP2792188B1 (en) 2011-12-14 2019-03-20 Seven Networks, LLC Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system
GB2499306B (en) 2012-01-05 2014-10-22 Seven Networks Inc Managing user interaction with an application on a mobile device
US9203864B2 (en) 2012-02-02 2015-12-01 Seven Networks, Llc Dynamic categorization of applications for network access in a mobile network
US9326189B2 (en) 2012-02-03 2016-04-26 Seven Networks, Llc User as an end point for profiling and optimizing the delivery of content and data in a wireless network
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
WO2013155208A1 (en) 2012-04-10 2013-10-17 Seven Networks, Inc. Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9218679B2 (en) * 2012-10-08 2015-12-22 Intel Corporation Reduced bitcount polygon rasterization
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US20140177497A1 (en) 2012-12-20 2014-06-26 Seven Networks, Inc. Management of mobile device radio state promotion and demotion
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
CN103150133B (zh) * 2013-03-06 2016-03-23 天脉聚源(北京)传媒科技有限公司 一种资源展示方法及装置
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9547918B2 (en) 2014-05-30 2017-01-17 Intel Corporation Techniques for deferred decoupled shading
CN106371780B (zh) * 2015-07-22 2019-08-13 龙芯中科技术有限公司 矢量图形处理方法和装置
CN105488261B (zh) * 2015-11-25 2019-12-27 天脉聚源(北京)科技有限公司 实时模拟线段的方法和装置
KR102608466B1 (ko) 2016-11-22 2023-12-01 삼성전자주식회사 영상 처리 방법 및 영상 처리 장치
US10627910B2 (en) 2017-02-21 2020-04-21 Adobe Inc. Stroke operation prediction for three-dimensional digital content
US10657682B2 (en) * 2017-04-12 2020-05-19 Adobe Inc. Drawing curves in space guided by 3-D objects
US11100700B2 (en) * 2017-08-28 2021-08-24 Will Dobbie System and method for rendering a graphical shape
CN108734760A (zh) * 2017-09-12 2018-11-02 武汉天际航信息科技股份有限公司 三维网格线条拉直系统及三维网格线条拉直方法
CN109345607B (zh) * 2018-10-11 2023-02-28 广州前实网络科技有限公司 一种自动标记epc图片方法
CN109658324B (zh) * 2018-11-14 2023-04-07 西安翔腾微电子科技有限公司 一种三角形光栅化扫描方法
CN109584334B (zh) * 2018-11-14 2023-04-07 西安翔腾微电子科技有限公司 一种基于uml的三角形光栅化扫描结构及光栅化扫描方法
CN111223142B (zh) * 2019-12-31 2023-09-08 西安翔腾微电子科技有限公司 一种gpu点光栅化点大小奇偶配置的顶点坐标映射方法
CN112581352B (zh) * 2020-12-05 2024-03-01 西安翔腾微电子科技有限公司 一种面向多gpu的高性能图元分屏光栅方法
CN117726774A (zh) * 2024-02-07 2024-03-19 芯瑞微(上海)电子科技有限公司 基于线产生算法的三角形光栅化方法、装置以及相关设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381519A (en) * 1987-12-04 1995-01-10 Evans & Sutherland Computer Corp. System for line interpolation for computer graphics displays
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
JP3865427B2 (ja) * 1996-04-11 2007-01-10 三菱プレシジョン株式会社 地形模擬モデルの生成方法及び表示の方法
US5905500A (en) * 1997-02-19 1999-05-18 Seiko Epson Corporation Method and apparatus for adaptive nonlinear projective rendering
US6636218B1 (en) 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
EP1345177B1 (en) 2002-03-11 2005-08-31 STMicroelectronics Limited Method and apparatus for evaluating whether a pixel point is inside a triangle
US7800631B2 (en) * 2003-03-18 2010-09-21 Qualcomm Incorporated Triangle rendering using direct evaluation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100941029B1 (ko) * 2008-02-27 2010-02-05 에이치기술(주) 그래픽 가속기 및 그래픽 가속 방법

Also Published As

Publication number Publication date
EP1828988A2 (en) 2007-09-05
US20060132495A1 (en) 2006-06-22
CN101116111B (zh) 2011-09-07
TW200634663A (en) 2006-10-01
WO2006069310A2 (en) 2006-06-29
US7362325B2 (en) 2008-04-22
CA2590658A1 (en) 2006-06-29
JP4699480B2 (ja) 2011-06-08
WO2006069310A3 (en) 2006-09-08
CN101116111A (zh) 2008-01-30
KR100897724B1 (ko) 2009-05-18
JP2008524756A (ja) 2008-07-10

Similar Documents

Publication Publication Date Title
KR100897724B1 (ko) 3d 래스터화 알고리즘을 사용하여 2d/3d 선을렌더링하는 방법
US9633469B2 (en) Conservative rasterization of primitives using an error term
Carr et al. Meshed atlases for real-time procedural solid texturing
US11734879B2 (en) Graphics processing using directional representations of lighting at probe positions within a scene
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
JP5232358B2 (ja) アウトラインフォントのレンダリング
US7868887B1 (en) Rendering rational quadratic Bézier curves on a GPU
EP3129977B1 (en) Method for efficient construction of high resolution display buffers
US9619853B2 (en) GPU-accelerated path rendering
US9245363B2 (en) System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model
US10592242B2 (en) Systems and methods for rendering vector data on static and dynamic-surfaces using screen space decals and a depth texture
US10140750B2 (en) Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
Theoharis et al. Graphics and visualization: principles & algorithms
US5684941A (en) Interpolation rendering of polygons into a pixel grid
US8477148B2 (en) Graphics processing systems
US8743135B2 (en) Graphics processing systems
CN107851330A (zh) 用于图形处理的零像素剔除
Rosen Rectilinear texture warping for fast adaptive shadow mapping
KR100305461B1 (ko) 그래픽처리장치
Dokter et al. Hierarchical rasterization of curved primitives for vector graphics rendering on the GPU
JP4311877B2 (ja) 副標本化テクスチャ端縁部のアンチエイリアシング
Bruijns Quadratic Bezier triangles as drawing primitives
Novo Rodríguez High performance visualization through graphics hardware and integration issues in an electric power grid Computer-Aided-Design application
Valient et al. GPU friendly, anti-aliased, soft shadow mapping
Jun et al. An Algorithm of Anti-Aliasing and Real-Time Shadow Rendering Based On Shadow Maps

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee