KR0150832B1 - 그래픽 대상을 인터로크하기 위한 방법 및 장치 - Google Patents

그래픽 대상을 인터로크하기 위한 방법 및 장치

Info

Publication number
KR0150832B1
KR0150832B1 KR1019940034539A KR19940034539A KR0150832B1 KR 0150832 B1 KR0150832 B1 KR 0150832B1 KR 1019940034539 A KR1019940034539 A KR 1019940034539A KR 19940034539 A KR19940034539 A KR 19940034539A KR 0150832 B1 KR0150832 B1 KR 0150832B1
Authority
KR
South Korea
Prior art keywords
graphical object
displayed
moved
graphical
graphics
Prior art date
Application number
KR1019940034539A
Other languages
English (en)
Other versions
KR950020280A (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 KR950020280A publication Critical patent/KR950020280A/ko
Application granted granted Critical
Publication of KR0150832B1 publication Critical patent/KR0150832B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units

Abstract

본 발명은 디스플레이 우선 순위(display priority)에 따라서 다수의 그래픽물체를 디스플레이하기 위한 디스플레이를 포함하는 그래픽 물체를 이동(move)시키기 위한 장치, 디스플레이된 그래픽 물체를 사용자 입력에 응답하여 이동시키기 위한 장치 및 이동된 그래픽 물체가 제2 디스플레이된 그래픽 물체의 일부분 아래에 디스플레이 되도록 그래픽 물체를 이동시킬 때에 이동된 그래픽 물체의 디스플레이 우선 순위를 사용자 입력에 응답하여 수정(modify)하기 위한 장치를 구비하고 있다. 게다가, 본 발명은 디스플레이상에 디스플레이 우선 순위에 따라서 다수의 그래픽 물체를 디스플레이하는 단계 , 디스플레이된 그래픽 물체를 사용자 입력에 응답하여 이동시키는 단계 및 이동된 그래픽 물체가 제2 디스플레이된 그래픽 물체의 일부분 아래에 디스플레이되도록 그래픽 물체를 이동시킬 때에 이동된 그래픽 물체의 디스플레이 우선 순위를 사용자 입력에 응답하여 수정(modify)하는 단계를 포함하고 있는 그래픽 물체를 이동시키기 위한 방법을 포함하고 있다.

Description

그래픽 대상을 인터로크하기 위한 방법 및 장치
제1도는 본 발명의 바람직한 실시예에 의하여 이용되는 전형적인 디지탈 컴퓨터의 개략도.
제2도는 그래픽 기능을 수행하기 위하여 호스트 컴퓨터 및 그래픽 어댑터에 의하여 통상적으로 이용되는 코드 층들을 도시한 블럭도.
제3도는 디스플레이되는 볼록 및 오목 다각형들을 포함한 몇개의 다각형을 도시한 도면.
제4a도 내지 제4d도는 제3도의 대상 A를 가로질러 제3도의 대상 C를 드래깅하는 것을 도시한 도면,
제5a도 내지 제5g도는 본 발명의 바람직한 실시예에 따라 그래픽 대상을 드래깅하는 것을 설명하는 플로우차트.
* 도면의 주요부분에 대한 부호의 설명
110 : 메인 프로세서 120 : 메인 메모리
130 : 입력 장치 140 : 출력 장치
150 : 그래픽 출력 장치 160 : 버스
170 : 입력/출력 제어기 180 : 입력/출력 장치
190 : 휴대용 매체 200 : 그래픽 어댑터
본 발명은 일반적으로 컴퓨터 그래픽 시스템에 관한 것으로서, 특히 그래픽 대상(graphical object)을 인터로크(interlock)하기 위한 방법 및 장치에 관한 것이다.
컴퓨터 그래픽 시스템에 있어서, 2차원 디스플레이(display)상에 2차원 및 3차원 그래픽 영상을 나타내는 것이 요망된다. 통상적으로, 이와 같은 영상은 다각형의 집합으로서 메모리에 저장될 수 있는 구조물(construct) 또는 영상(image)이다. 디스플레이상에 영상을 생성(generate)하기 위하여는, 통상적으로 연산량이 엄청나게 많은 처리 과정을 통해 다각형들을 랜더링(rendering)하게 된다. 그러나, 나타내고자 하는 영상의 일부분이 디스플레이상의 윈도우(window)에 의하여 또는 디스플레이 자체에 의하여 제공된 시계(field of vision)밖에 있을 수도 있다. 이와 같은 경우에, 영상이 생성되고 있을 때에 그 영상과 그 영상을 구성하는 다각형들을 클립핑(clipping)하여 연산량을 줄이고 렌더링 속도를 증가시키는 것이 바람직할 수 있다.
다각형은 일반적으로 정점(vertex)의 집합 (P(0), P(1), …, P(n-2), P(n-1), 여기서, n은 다각형에 있는 정점의 갯수)으로 규정된다. 각 정점(P(i))은 적당한 좌표 공간에서의 위치 V(i)와 특정 함수(본 명세서에서는 색상 인자(color factor) (f(Vi))를 말함)에 의하여 규정된다. 색상 인자는 색상(그레이 스케일(gray scale) 포함) 변화(variation)(광 세기(light intensity), 열 특성(thermal characteristic), 습도 인자(humidity factor) 등)로서 후에 디스플레이될 수 있는 각 정점에서 평가된 함수이다. 색상 인자는 색상으로 변환될 수 있고 모델링(modelling)(간단한 조명 모델링(lighting modelling) 또는 더 복잡한 날씨 모델링(weather modelling)과 같은 것)에서 유용하게 사용된다.
일단 다각형들이 렌더링되고 나면, 전형적인 2차원 그래픽 시스템의 경우에는 사용자가 다각형들을 피킹(picking)하여 원하는 장소로 드래깅(dragging)할 수 있다. 다각형은 사용자가 대상을 선택하게 될 때에, 즉 일반적으로 커서(cursor)를 대상 위에 위치시키고 나서 마우스 버튼(mouse button)을 누름으로써 피킹된다. 대상은 사용자가 커서를 이동시킴으로써, 일반적으로는 마우스 버튼을 누르고 있는 상태에서 마우스를 이동시킴으로써 드래깅된다. 통상적으로는, 드래깅되는 대상은 그 대상이 이동될 때에 이를 렌더링하는 연산량을 감소시키기 위하여 드래깅 동작 동안에 윤곽선으로(in outline form) 표시된다. 사용자가 일단 대상을 드래깅하는 것을 완료하고 나면, 사용자는 통상적으로 마우스 버튼을 해제(release)함으로써 그 대상을 드롭(drop)시킬 수 있다. 그런 다음에 종래 기술의 시스템은 드롭 위치(drop location)에서 다각형을 렌더링한다. 만약에 바로 이 드롭 위치에 이미 어떤 대상이 존재하고 있는 경우에는, 이 드롭된 대상은 기존 대상의 상부에 있는 것으로 렌더링된다. 사용자가 기존 대상을 드롭된 대상의 상부에 있게 하고 싶다면, 사용자는 기존 대상을 피킹하여 그 대상을 어디든 다른 곳으로 드래깅하지 않고 그대로 드롭하여야만 한다. 이와 같이 함으로써 기본 대상이 바로 그 드래깅한 대상의 상부에 위치 하게 된다.
본 발명은 디스플레이 우선 순위(display priority)에 따라서 다수의 그래픽 대상을 디스플레이하기 위한 디스플레이를 포함하는 그래픽 대상을 이동(move)시키기 위한 장치, 디스플레이된 그래픽 대상을 사용자 입력에 응답하여 이동시키기 위한 장치, 및 그래픽 대상이 이동됨에 따라 이동된 그래픽 대상이 디스플레이된 제2그래픽 대상의 일부분 아래에 디스플레이되도록 이동된 그래픽 대상의 디스플레이 우선 순위를 사용자 입력에 응답하여 변경(modify)하기 위한 장치를 구비하고 있다. 게다가, 본 발명은 디스플레이상에 디스플레이 우선 순위에 따라서 다수의 그래픽 대상을 디스플레이하는 단계, 디스플레이된 그래픽 대상을 사용자 입력에 응답하여 이동시키는 단계, 및 그래픽 대상이 이동됨에 따라 이동된 그래픽 대상이 디스플레이된 제2 그래픽 대상의 일부분 아래에 디스플레이되도록 이동된 그래픽 대상의 디스플레이 우선 순위를 사용자 입력에 응답하여 변경(modify)하는 단계를 포함하고 있는 그래픽 대상을 이동시키기 위한 방법을 포함하고 있다.
본 발명의 특징 및 장점들은 도면 및 이후의 상세한 설명을 참조하면 보다 잘 이해될 것이다.
본 명세서에서는, 특히 2차원 환경에서 대상을 인터로크하기 위한 개선된 방법 및 장치에 대해서 설명한다. 바람직한 실시예에서, 사용자는 그래픽 대상을 다른 그래픽 대상의 상, 하, 또는 상하 모두의 방향으로 드래깅(인터로크(interlock))할 수 있다.
제1도는 본 발명의 바람직한 실시예에 의하여 이용되는 일반적인 디지탈 컴퓨터(100)의 블럭도이다. 이 컴퓨터는 입력 장치(130) 및 출력 장치(140)가 부착되어 있는 컴퓨터 박스(computer box : 105) 내의 메모리(120) 및 하드 디스크(hard disk : 125)에 결합된 메인 프로세서(main processor : 110)를 포함하고 있다. 메인 프로세서(110)는 하나의 프로세서 또는 다수의 프로세서를 포함할 수 있다. 입력 장치(130)는 키보드, 마우스, 태블릿(tablet) 또는 다른 형태의 입력 장치를 포함할 수 있다. 출력 장치(140)는 텍스트 모니터(text monitor), 플로터(plotter) 또는 다른 형태의 출력 장치를 포함할 수 있다. 자기 디스켓 또는 콤팩트 디스크등의 컴퓨터 판독 가능 휴대용 매체(computer readable removable media : 190)는 디스크 드라이브(disk drive) 또는 CD-ROM(compact disc - read only memory) 드라이드등과 같은 입력/출력 장치(180)에 삽입될 수 있다. 데이타는 I/O 장치 제어기(170)의 제어하에서 I/O 장치에 의하여 착탈식 매체(removable media)로부터 판독되거나 그것으로 기록된다. I/O 장치 제어기는 메인 프로세서와 버스(160)를 통하여 통신한다.
메인 메모리(main memory : 120), 하드 디스크(125) 및 착탈식 매체(190)는 모두 메인 프로세서(110)에 의하여 처리되는 데이타를 저장하기 위간 메모리를 말한다.
메인 프로세서는 또한 그래픽 어댑터(graphics adapter : 200)를 통하여 그래픽 디스플레이(graphics display)등과 같은 그래픽 출력 장치(150)에 결합될 수도 있다. 그래픽 어댑터(200)는 버스(160)를 통하여 메인 프로세서(110)으로부터 그래픽에 관한 명령(instruction)을 수신한다. 그 다음, 그래픽 어댑터는 그래픽 어댑터 메모리(230)에 결합되어 있는 그래픽 어댑터 프로세서(220)를 가지고 이들 명령들을 실행하게 된다. 그 다음, 그래픽 어댑터에 있는 그래픽 프로세서는 이들 명령들을 실행하여 이들 명령에 따라서 프레임 버퍼(frame buffer : 240)를 갱신(update)한다.
그래픽 프로세서(220)는 또한 특정 형태의 프리미티브(primitive)를 렌더링하기 위한 특수 렌더링 하드웨어(specialized rendering hardware)를 포함할 수도 있다. 프레임 버퍼(240)는 그래픽 출력 장치상에 디스플레이되어질 모든 픽셀(pixel)에 대한 데이타를 포함하고 있다. RAMDAC(랜덤 억세스 메모리 디지탈-아날로그 변환기)(random access memory digital-to-analog converter) (250)는 프레임 버퍼에 저장된 디지탈 데이타를 그래픽 디스플레이(150)에 공급될 RGB 신호로 변환함으로써 메인 프로세서로부터 출력된 원하는 그래픽을 렌더링하게 된다.
제2도는 그래픽 기능을 수행하기 위하여 호스트 컴퓨터(host computer) 및 그래픽 어댑터에 의하여 일반적으로 이용되는 코드의 층(layers of code)을 설명하는 블럭도이다. UNIX 등과 같은 운영 시스템(operating system : 300)은 호스트 컴퓨터의 기본 제어를 제공한다. 운영 시스템에는 하드웨어 집중 작업(hardware intensive task)을 운영 시스템에 제공하는 운영 시스템 커널(operating system kernel : 310)이 결합되어 있다. 운영 시스템 커널은 호스트 컴퓨터 마이크로코드(microcode : 320)와 직섭 통신한다. 호스트 컴퓨터 마이크로코드는 호스트 컴퓨터 프로세서에 의하여 실행되는 기본 명령어 집합(primary instruction set)이다. 운영 시스템(300)에는 그래픽 응용 프로그램(330, 332)이 결합되어 있다. 이 그래픽 응용 소프트웨어는 실리콘 그래픽(Silicon Graphic)의 GL, IBM의 graPHIGS, MIT의 PEX 등과 같은 소프트웨어 패키지를 포함할 수 있다. 이 소프트웨어는 2차원 또는 3차원 그래픽의 기본 기능을 제공한다. 그래픽 응용 프로그램(330, 332)은 그래픽 응용 API(응용 프로그램 인터페이스)(application program interface : 340, 342)에 각각 결합되어 있다. API는 많은 연산 집중 작업을 그래픽 응용프로그램에 제공하며 그래픽 응용 소프트웨어와 그래픽 어댑터용 장치 구동기(device driver)와 같은 그래픽 하드웨어에 근접한 소프트웨어사이의 인터페이스를 제공한다. 예를 들어, API(340, 342)는 GAI(그래픽 응용 인터페이스)(graphics application interface : 350, 352)과 각각 통신할 수 있다. GAI는 응용 API와 그래픽 어댑터 장치 구동기(370)사이의 인터페이스를 제공한다. 어떤 그래픽 시스템에 있어서는, API는 또한 GAI의 기능을 수행한다.
운영 시스템 및 장치 구동기는 그래픽 응용 프로그램, API, 및 GAI를 하나의 처리(single process)로 간주한다. 즉, 운영 시스템(300) 및 장치 구동기(370)는 그래픽 응용 프로그램(330, 332), API(340, 342), 및 GAI(350, 352)를 각각 프로세스(360, 362)로 간주하게 된다. 운영 시스템 및 장치 구동기는 이 프로세스를 운영 시스템 커널에 의하여 그 프로세스에 할당된 프로세스 식별자(process identifier)(PID)로서 식별하게 된다. 프로세스(360, 362)는 별도의 두 윈도우에서 프로그램을 두번 실행하는 것과 같이, 두번을 동시에 실행하게 되는 동일한 코드를 사용할 수 있다. PID는 동일한 코드를 별도로 실행하는 것을 구별하는데 사용된다.
장치 구동기는 운영 시스템 커널(310)의 확장인 그래픽 커널(graphics kernel)이다. 그래픽 커널은 그래픽 어댑터(380)의 마이크로코드와 직접 통신한다. 많은 그래픽 시스템에 있어서, GAI, 또는 GAI 층이 사용되지 않는 경우에는 API가 장치 구동기에 초기 요청 명령어(initial request instruction)를 보냄으로써 GAI 또는 API로부터 어댑터 마이크로코드(adapter microcode)로의 직접적인 억세스(direct access)를 요청할 수 있다. 또한, 많은 그래픽 시스템의 경우에 초기 요청 명령어를 장치 구동기에 보냄으로써 어댑터 마이크로코드가 어댑터 마이크로코드로부터 GAI 로 또는 GAI가 사용되지 않는 경우에는 API로의 직접적인 억세스를 요청할 수 있다. 이 두 프로세스 모두를 이후부터는 직접 메모리 억세스(direct memory access)(DMA)라고 하기로 한다. DMA는 일반적으로 큰 데이타 블럭을 전송하는 때에 사용된다. DMA는 DMA를 설정하기 위하여 장치 구동기에 대한 초기 요청과는 다른 디스플레이 구동기를 거쳐야 하는 과정을 없애므로서 호스트 컴퓨터와 어댑터사이의 데이타 전송을 보다 더 빠르게 한다. 어떤 경우에는, 어댑터 마이크로코드는 어댑터 마이크로코드로 하여금 어댑터 마이크로코드에 의하여 이용되고 있는 현재의 속성을 교체할 수 있도록 하는 문맥 절환(context switching)을 이용한다. 문맥 절환은 어댑터 마이크로코드가 현재 사용하고 있는 것과 다른 속성을 이용하는 그래픽 응용으로부터 어댑터 마이크로코드가 명령어를 수신하게 되는 때에 사용된다. 문맥 절환은 일반적으로 속성 변경(attribute change)을 인식하는 장치 구동기에 의하여 초기화된다.
블럭(300-340)은 일반적으로 이용되고 있는 그래픽 어댑터의 형태에 독립적인 소프트웨어 코드 층(software code layer)을 나타낸다. 블럭(350-380)은 일반적으로 이용되고 있는 그래픽 어댑터의 형태에 종속적인 소프트웨어 코드 층을 나타낸다. 예를 들어, 다른 그래픽 어댑터가 그래픽 응용 소프트웨어에 의하여 사용되는 경우에, 새로운 GAI, 그래픽 커널 및 어댑터 마이크로코드가 필요하게 된다. 게다가, 블럭(300-370)은 일반적으로 호스트 컴퓨터상에 존재하며 이에 의하여 실행된다. 그러나, 어댑터 마이크로코드(380)는 그래픽 어댑터상에 존재하며, 이에 의해 실행된다. 그러나 어떤 경우에는 어댑터 마이크로코드는 그래픽 어댑터의 초기화 동안에 호스트 컴퓨터에 의하여 그래픽 어댑터로 로드(load)된다.
전형적인 그래픽 시스템에 있어서, 사용자는 그래픽 응용 프로그램에 2차원 또는 3차원 모델로부터 영상을 구성(construct)하도록 명령한다. 사용자는 먼저 광원의 위치와 종류를 선택한다. 그 다음에 사용자는 응용 소프트웨어에 미리 정의된 또는 사용자가 정의한 대상의 집합으로부터 원하는 모델을 작성(build)하도록 명령한다. 각각의 대상은 그 대상을 묘사하는 하나 이상의 동일 평면 도형 프리미티브(coplanar drawing primitive)를 포함할 수도 있다. 예를 들어, 많은 삼각형과 같은 도형 프리미티브의 집합은 대상의 표면을 정의하는데 사용될 수도 있다. 그 다음에 사용자는 모델을 보기 위하여 윈도우에 투시도를 제공함으로써 원하는 영상을 정의하게 된다. 그 다음에 응용 소프트웨어는 DMA를 사용하지 않는 경우에는 API, GAI, 그 다음에는 장치 구동기를 통하여 대상을 묘사하는 도형 프리미티브(drawing primitive)를 어댑터 마이크로코드에 보냄으로써 모델로부터 영상을 렌더링하기 시작한다. 그 다음에 어댑터 마이크로코드는 윈도우에서 보이지 않는 도형 프리미티브를 클립핑해둠(사용하지 않음)으로써 그래픽 디스플레이상의 영상을 렌더링하고, 나머지 도형 프리미티브 각각을 사용자에 의하여 주어진 투시도로부터 볼 수 있는 픽셀로 분해한다. 그 다음에 픽셀은 종종 3 차원 모델의 경우에 깊이 버퍼(depth buffer)를 사용하여 프레임 버퍼로 로드된다. 이 단계는 관련된 도형 프리미티브, 변수 및 픽셀의 갯수로 인하여 상당히 많은 연산을 필요로 한다. 프레임 버퍼에 저장되고 그래픽 디스플레이상에 디스플레이되는 영상은 일반적으로 픽셀이 어느 도형 프리미티브(drawing primitive) 또는 대상로부터 유도되었는가 하는 등의 원래의 정보를 가지고 있지 않다. 그 결과, 윈도우, 사용자 투시도, 모델, 조명 등이 수정되는 경우에 영상을 부분적으로 또는 전체적으로 다시 렌더링할 필요가 있을 수 있다.
바람직한 실시예에 있어서, 드래깅 기법(dragging techinque)은 어댑터 프레임 버퍼에 근접한 어댑터 마이크로코드 등과 같은 많은 위치에서 사용될 수 있다. 이 방법도 비교적 빠르며 구현하기가 아주 용이하다. 게다가, 드래깅 기법은 렌더링되는 영상에 앞서 또는 순차적으로 데이타를 그래픽 응용 소프트웨어로 백업 전달시키는 그래픽 어댑터에 의해 시스템 메모리에 렌더링된 영상이 저장되는 그래픽 응용 소프트웨어에서 응용될 수 있다. 이 방법은 훨씬 더 느리기는 하지만 이미 존재하는 그래픽 어댑터에 대하여 이 기법을 활용할 수 있다. 드래깅 기법은 또한 그래픽 어댑터 프로세서에서 하드웨어 방식으로 구현될 수도 있다. 이와 같은 방법은 아주 빠르기는 하지만 특수한 하드웨어를 필요로하게 된다. 이와 같이가 함으로써 그래픽 어댑터에 의하여 디스플레이되어질 프리미티브를 신속하게 클리핑할 수 있다. 당해 기술분야에서 통상의 지식을 가진자에게는 분명한 것과 같이, 본 기법은 호스트 컴퓨터 또는 그래픽 어댑터내의 많은 다른 위치에서도 적용될 수 있다.
대부분의 그래픽 대상은 일련의 정점을 가지는 다각형으로 묘사될 수 있다. 다각형은 볼록(convex) 또는 오목(concave)할 수 있다. 제3도는 디스플레이(400)상에 볼록 및 오목 다각형을 포함하는 몇개의 다각형을 도시하고 있다. 다각형 A 및 C는 오목 다각형인 반면, 다각형 B는 볼록 다각형이다. 각각의 다각형은 모서리에 의하여 상호연결되어 있는 일련의 정점으로 정의된다. 다각형은 정점을 다각형으로 부터 제거하는 때에 다각형에 의하여 덮여질 수 있는 정점 A1과 같은 정점이 존재하는 경우에는 오목이 된다. 예를 들어, 정점 A1이 다각형 A로부터 제거된 경우에는, 정점 A2로부터 정점 A4로 가는 새로운 선은 이전의 정점 A1을 다각형 내부에 두게 된다. 다각형은 또한 임의의 정점들의 모서리의 내각(interior angle)이 180도 보다 더 큰 경우에는 오목으로 정의될 수 있다. 예를 들어, 볼록인 다각형 B에서는, 정점에서의 모든 내각이 180도 보다 더 작다. 크러나, 다각형 A의 정점 A1에서의 내각은 180도 보다 더 크다.
임의의 오목 다각형은 각 오목점을 그 다각형의 다른 정점과 연결시켜 그 다각형의 각 부분이 볼록이 되도록 함으로써 볼록 다각형의 집합으로 분할될 수 있다. 제3도의 다각형 C를 참조하면, 이 다각형은 이 다각형을 정점 C4로부터 정점 C7으로 또한 정점 C3로부터 정점 C8로 분할함으로써 세 개의 볼록 다각형으로 분할될 수 있다. 오목 다각형을 볼록 다각형으로 변환하는 또다른 방법으로는 각각의 오목 다각형을 일련의 삼각형으로 분할하는 방법이다. 제3도의 다각형 C를 참조하면, 다각형 C는 또한 정점 C4로부터 정점 C6으로 또한 정점 C3로부터 정점 C1으로 또한 정점 C3로부터 정점 C7으로 분할될 수 있다. 데다가, 모든 다각형은 그 다각형이 오목인지 볼록인지를 불문하고 삼각형의 집합으로 쪼개질 수 있다. 이와 같이 가 함으로써 모든 오목 다각형은 볼록 다각형의 집합으로 분할되어진다.
바람직한 실시예에서, 대상이 다른 대상위로 드래깅되는 때에, 드래깅되어진 대상은 정지한 대상의 상부, 정지한 대상의 하부 또는 인터로크(interlock)라고 불리는 정지한 대상의 상부 및 하부의 조합된 곳으로 드래깅될 수 있다.
제4a도 내지 제4d도는 제3도의 대상 C를 제3도의 대상 A를 가로질러 드래깅하는 것을 나타내고 있다. 제4a도는 정점 C7에서 대상 A와 충돌하는 대상 C를 나타내고 있다. 이 시점에서, 본 발명의 얀호한 실시예는, 사용자가 대상 C를 대상 A의 아래 또는 위로 드래깅할 것인가의 여부를 지정하게 된다. 이 예에서, 사용자는 대상 C가 이와 같이 충돌하도록 대상 A 아래로 드래깅되도록 선택한다. 제4b도는 제2 지점, 정점 C2가 대상 A와 충돌할 때까지 대상 C를 대상 A 아래로 드래깅하는 것을 나타내고 있다. 이 시점에서, 본 발명의 바람직한 실시예에 따르면, 사용자는 대상 C의 이 부분이 대상 A의 아래 또는 위로 드래깅되는 것을 선택한다. 이 예에서, 사용자는 대상 C의 상기 부분이 대상 A의 위로 지나가도록 선택한다. 제4C도는 대상 A의 일부분이 대상 C의 일부분위에 있고 대상 C의 다른 부분이 대상 A의 일부분 위에 있는 대상 A 및 C를 나타내고 있다. 제4d도는 대상 C가 더 이상 위로 드래깅되지 않는 인터로크 상태(interlock condition)를 나타내고 있다. 즉, 대상 C의 일부분이 대상 A의 일부분위에 있고 대상 C의 다른 부분이 대상 A의 다른 부분의 아래에 있는 경우에, 대상 C를 위로 더 드래깅하기 위하여는 대상 A 또는 대상 C를 슬라이스(slice)할 필요가 있다. 본 발명의 바람직한 실시예에서, 대상 C는 각 대상의 완전성(integrity)을 유지하기 위하여 위로 드래깅되지 않도록 되어 있다.
제5a도 내지 제5g도는 본 발명의 바람직한 실시예에 따른 그래픽 대상을 드래깅하는 것을 나타낸 플로우차트이다. 이 플로우차트는 소망의 그래픽 대상을 피킹하여 드래깅하기 위하여(to pick and drag) 버튼이 있는 마우스를 사용하는 것으로 가정한다. 그러나, 대상을 피킹하여 드래깅하는 다른 방법들도 있음은 당해 기술분야의 통상의 지식을 가진 자에게는 자명하다. 게다가, 그래픽 대상은 이들 그래픽 대상이 오목이고 몇개의 볼록 부분으로 분리되어지는 경우, 또는 이들 그래픽 대상이 단일의 그래픽 대상로서 드래깅되도록 함께 그룹을 이룬 몇개의 그래픽 대상의 집합체인 경우를 다루기 위하여 몇개의 부분으로 구성되어질 수 있다. 이 예에서, 각 대상의 각각의 부분은 다른 대상의 어느 부분이 그 부분의 위에 있는 지를 가리키는 ABOVE_LIST와 그 대상의 어느 부분이 그 부분의 아래에 있는지를 가리키는 BELOW_LIST를 가지고 있다.
제5a도는 대상이 사용자에 의하여 드래깅될 것을 예기하여 그 대상을 먼저 피킹하는 때에 취하는 초기화 단계를 나타내며, 바람직하게는 마우스 버튼을 누르는 때에 호출된다. 단계 500에서, 가리켜진 대상상에 피킹을 유지하도록 마우스 촛점(mouse focus)이 로크(lock)되고, 대상이 드래깅될 때에 대상 윤곽의 위치를 제산하기 위하여 현재의 마우스의 위치가 얻어 지며, 도형 모드(drawing mode)는 XOR로 설정되고(동일한 위치에 대상이 그려지면 그 대상이 제거되도록 함) 대상이 드래깅되는 때에 그 대상의 채색된 윤곽을 나타내기 위하여 색상이 설정된다. 단계 510에서, 루틴 DRAW_XOR_FRAME이 호출되어 대상이 드래깅되기 이전에 그 대상의 XOR 프레임(frame)을 그리도록 한다. DRAW_XOR_FRAME 루틴은 이하에서 보다 상세히 설명된다. 제5a도에 대한 의사 코드(pseudocode)는 표 1에 제공되어 있다.
제5b도는 사용자가 마우스 버튼을 누르고 있는 동안에 마우스를 이동시킴으로써 대상을 드래깅하기 시작하는 때에 취하는 단계를 나타내고 있다. 첫번째 단계 520에서, 마우스의 새로운 위치가 얻어진다. 두번째 단계 530에서, 루틴 DETECT_INTERSECT가 호출되어 대상의 이동이 다른 대상과 교차(intersect)하거나 또는 인터로크(interlock)하토록 할 것인가의 여부를 판단하도록 한다. 이 조건은 단계 540에서 검사된다. 인터로크 조건이 발생한 경우에는, 사용자는 그 대상을 더 이상 드래깅할 수 없고 드래깅 루틴(drag routine)을 빠져나온다. 또 다른 실시예에서는, 인터로크된 대상이 드래깅된 대상과 그룹을 이루어 두 대상 모두가 함께 드래깅되도록 할 수 있다. 인터로크 조건이 발생하지 않는 경우에는, 처리는 단계 550에서 계속한다. 단계 550 및 560에서, 대상의 XOR 프레임은 이전의 위치로부터 제거되며 그 다음에 새로운 위치에서 다시 그려진다. 단계 570에서, 이전의 마우스 위치는 새로운 마우스 위치와 같도록 설정된다. 제5b도에 대한의사 코드는 표 2에 제공되어 있다.
제5c도는 드래깅된 대상 또는 드래깅된 대상의 일부분이 새로운 대상 또는 대상의 일부분과 교차하는 지의 여부를 판단하기 위하여 취해지는 단계를 나타내고 있다. 첫번째 단계 600에서, OBJECT_X는 (드래깅된 대상이 다수의 볼록 대상로 분리되는 오목 대상인 경우에) 드래깅된 대상의 첫번째 부분으로 설정된다. 단계 610에서, OBJECT_Y는 윈도우내의 첫번째 대상의 첫번째 부분으로 설정된다. 단계 620에서, 두 대상이 처음으로 교차하는 지의 여부가 판단된다. 이것은 그 대상의 임의의 모서리가 교차하는 지를 결정한 다음에, 이전의 교차가 발생하였는 지를 알아보기 위하여 각 대상의 ABOVE_LIST 및 BELOW_LIST를 검사함으로써 판단될 수 있다. 단계 620이 거짓인 경우에는, 프로세스는 이하에서 설명하는 단계 650으로 진행한다. 단계 620가 참인 경우에는, 단계 630에서 교차점의 모서리가 OBJECT_X 또는 OBJECT_Y 중 어느 하나의 내부 모서리(interior edge)인지의 여부를 판단한다. 예(yes) 인 경우에는, 단계 635에서, 각 대상의 ABOVE_LIST 및 BELOW_LIST는 내부 모서리를 공유하는 대응 부분의 ABOVE_LIST 또는 BELOW_LIST에 해당하도록 설정된다. 즉, OBJECT_X가 OBJECT_Y와 OBJECT_Y와 내부 모서리에서 처음으로 교차하는 경우에, OBJECT_X는 OBJECT_Y와 내부 모서리를 공유하는 다른 부분과 이전에 교차하였음에 틀림없다.
OBJECT_X가 내부 모서리를 공유하는 다른 부분 아래에서와 같이 열거되어 있는 , OBJECT_X도 또한 OBJECT_Y 아래에 있게 된다. 단계 635를 완료한 때에는, 프로세스는 이하에 기재된 바와 같이 단계 650으로 진행한다. 단계 630 이 거짓인 경우에는, 단계 640에서 사용자가 OBJECT_X(드래깅된 대상)가 OBJECT_Y 아래로 지나가야만 하는 것을 가리키도록 ALT 키를 누르고 있는 지의 여부를 판단하게 된다. 물론, 다른 실시예들은 드래깅된 대상이 다른 대상의 아래 또는 위로 지나가야하는 지의 여부를 가리키기 위하여 다른 방법을 사용할 수도 있다. 단계 640가 거짓인 경우에는, 단계 645에서 OBJECT_X가 OBJECT_Y의 ABOVE_LIST에 수록되고, OBJECT_Y가 OBJECT_X의 BELOW_LIST에 열거된다. 단계 640가 참인 경우에는, 단계 647에서 OBJECT_X가 OBJECT_Y의 BELOW_LIST에 열거되어 있고 OBJECT_Y가 OBJECT_X의 ABOVE_LIST에 열거되어 있다. 어느 경우에든지, 프로세스는 단계 650으로 계속된다. 단계 650에서, OBJECT_Y는 윈도우내의 대상의 그 다음 부분으로 설정된다. 단계 655에서, 윈도우내의 대상의 마지막 부분이 처리되었는 지의 여부를 판단한다. 만약 처리하지 않은 경우에는, 프로세스는 단계 620으로 되돌아간다. 만약 처리한 경우에는, 단계 660에서 OBJECT_X는 드래깅된 대상의 그 다음 부분으로 설정된다. 단계 665에서, 이전의 OBJECT_X ABOVE_LIST 및 BELOW_LIST의 모든 엔트리를 검사하여 수록된 모든 다른 부분들이 아직도 교차하고 있는 지를 검사한다. 이와 같은 것은 상기한 단계 620 - 650 동안에 리스트에 있는 모든 엔트리에 플래그(flag)를 붙임으로써 쉽게 검사될 수 있다. 교차하지 않는 엔트리가 존재하는 경우에는, 이들 엔트리는 바람직한 실시예에 따라서 모든 리스트로부터 제거되어야만 한다. 이와 같이가 함으로써 사용자는 초기에 드래깅된 대상이 제2 대상위에 있도록 규정하여 두 대상 모두의 리스트에 있는 엔트리가 제거되도록 드래깅된 대상이 제2 대상과 교차하지 않도록 하고 나서 사용자로 하여금 드래깅된 대상을 제2 대상의 아래로 드래깅할 수 있도록 한다. 단계 670에서, OBJECT-X의 모든 부분이 처리되었는 지를 판단한다. 만약 처리되지 않은 경우에는, 프로세스는 단계 610으로 되돌아간다 만약 처리된 경우에는, 루틴 DETECT_INTERLOCK가 호출된다. 루틴 DETECT_INTERLOCK는 이하에서 상세히 설명된다. 제5c도에 대한 의사 코드는 표 3에 제공되어 있다.
제5d는 인터로크 조건(interlock condition)이 존재하는 지를 판단하기 위하여 취하는 단계들을 설명한다. 첫번째 단계 700에서, INTERLOCK_FLAG는 거짓으로 설정되고, OBJECT_X는 드래깅된 대상로서 설정되며 OBJECT_Y는 윈도우내의 첫 번째 대상로서 설정된다. 단계 705에서, VERTEX_V는 OBJECT_Y의 첫번째 정점으로서 설정된다. 단계 710에서, OBJECT_X가 OBJECT_Y의 VERTEX_V를 처음으로 만나게 되는지 또는 OBJECT_Y가 OBJECT-X의 VERTEX_V를 처음으로 만나게 되는 지를 판단한다(OBJECT_X와 OBJECT_Y 모두의 정점 전체는 VERTEX_V로서 검사된다). 만약 그렇지 않은 경우에는, 프로세스는 이하에서 설명하는 단계 730으로 계속된다. 단계 710 이 참인 경우에는, 단계 715에서, VERTEX_V가 그의 대상(OBJECT_X 및 OBJECT_Y)의 오목 부분에 있는지 또한 인터로크 조건이 존재하는지를 판단한다. 인터로크 조건은 OBJECT_X 가 OBJECT_Y의 일부분의 위에 있고 OBJECT_X가 또한 OBJECT_Y의 제2 부분의 아래에도 있으며 OBJECT_Y의 두 부분 모두가 VERTEX_V를 포함하고 있을 때에 VERTEX_V가 OBJECT_Y의 정점인 경우에 발생한다. 인터로크 조건은 OBJECT_Y가 OBJECT_X의 일부분의 위에 있고 OBJECT_Y가 또한 OBJECT_X의 제2부분의 아래에도 있으며 OBJECT_X의 두 부분 모두가 VERTEX_V를 포함하고 있을 때에 VERTEX_V가 OBJECT_X의 정점인 경우에 발생한다. 단계 715가 거짓인 경우에는, 인터로크 조건은 발생하지 않았으며 프로세스는 이하에서 설명하는 단계 730으로 계속된다. 단계 715가 참인 경우에는, 인터로크 조건은 발생하였으며 프로세스는 단계 720으로 계속된다. 단계 720에서, INTERLOCK_FLAG가 TRUE로 설정되고 프로세스는 단계 730으로 계속된다 단계 730에서, VERTEX_V는 OBJECT_Y 또는 OBJECT_X의 그 다음의 정점으로 설정된다(일단 모든 OBJECT_X의 정점들은 처리되었음). 단계 735에서, OBJECT_Y 및 OBJECT_X의 모든 정점들이 처리되었는 지를 판단한다. 만약 그렇지 않은 경우에는, 프로세스는 단계 710으로 되돌아간다. 만약 그러한 경우에는, 단계 740에서, OBJECT_Y는 윈도우에서의 그 다음의 대상로 설정된다. 단계 745에서, 윈도우내의 모든 대상들이 처리되었는 지를 판단한다. 만약 그렇지 않은 경우에는, 프로세스는 단계 705로 되돌아간다. 만약 그러한 경우에는, 프로세스는 이 루틴에 대해서 정지한다. 제5d도에 대한 의사 코드는 표 4에 제공되어 있다.
제5e도는 사용자가 그래픽 대상의 드래깅을 완료하는 때에 취하는 종료 단계(termination step)를 나타내며 마우스 버튼을 놓는 때에 호출된다. 단계 800에서, 마우스 촛점은 로크가 풀려서(unlock) 대상의 피킹이 해제된다. 단계 810에서, 루틴 DRAW_XOR_FRAME이 호출되어 현재의 마우스 위치에서 그 대상의 마지막 XOR 프레임을 제거하도록 한다. 단계 620에서, 도형 모드(drawing mode)는 XOR 모드로부터 다시 복사 모드(copy mode)로 설정된다. 단계 630에서, 루틴 OBJECT_REDISPLAY 이 호출되어 마지막 마우스 위치에 그 대상을 전체적으로 다시 그리도록 한다. OBJECT_REDISPLAY 루틴은 제5g도를 참조하여 이하에 보다 상세히 설명된다. 제5e도에 대한 의사 코드는 표 5에 제공되어 있다.
제5f도는 드래깅된 대상을 그리기 위하여 취하는 단계를 나타내고 있으며 이하에 서술되는 루틴에 의하여 호출된다. 단계 850에서, PART_A는 OBJECT_X의 첫번째 부분으로 설정된다(이것은 OBJECT_X가 오목이고 몇개의 볼록 부분으로 분리되거나 또는 OBJECT_X가 그래픽 대상의 집합체인 경우를 처리하기 위한 것이다). 단계 860에서, OBJECT_Y는 ABOVE_LIST의 첫번째 대상로 절정된다. 단계 870에서, PART_A는 OBJECT_Y에 의하여 클립핑되고 OBJECT_Y는 ABOVE_LIST의 그 다음의 부분으로 설정된다. 단계 875에서, 최상의 리스트의 모든 부분들이 처리되었는지를 판단한다. 만약 그렇지 않은 경우에는, 프로세스는 단계 870으로 되돌아간다. 그 외의 경우는 단계 880으로 계속된다. 단계 880에서, PART_A는 OBJECT_X의 그 다음의 부분으로 설정된다. 단계 885에서, OBJECT_X의 모든 부분들이 처리되었는 지를 판단한다. 만약 그렇지 않은 경우에는, 프로세스는 단계 860으로 되돌아간다. 그 외의 경우에는 프로세스는 정지한다.
제5f도에 대한의사 코드는 표 6에 제공되어 있다.
제5g도는 드래깅된 대상을 다시 디스플레이하기 위하여 취하는 단계를 나타내며 이하에 서술하는 루틴에 의하여 호출된다. 단계 900에서, 드래깅된 대상은 그려지며 PART_A는 드래깅된 대상의 첫번째 부분으로서 설정된다. 단계 910에서, PART_A의 ABOVE_LIST에 수록되어 있는 선택된 부분을 포함하고 있는 대상이 디스플레이된다. 게다가, PART_A의 ABOVE_LIST의 그 다음의 엔트리가 검색된다. 단계 925에서, PART_A의 ABOVE_LIST의 모든 엔트리들이 처리되었는 지를 판단한다. 만약 그렇지 않은 경우에는, 프로세스는 단계 920으로 되돌아간다. 만약 그러한 경우에는, 단계 930에서, PART_A는 드래깅된 대상의 그 다음의 부분으로 설정된다. 단계 935에서, 드래깅된 대상의 모든 부분들이 처리되었는 지를 판단한다. 만약 그렇지 않은 경우에는,프로세스는 정지한다. 제5g도에 대한의사 코드는 표 7에 제공되어 있다.
비록 본 발명이 특정 실시예들과 관련하여 위에서 상세히 설명되기는 하였지만, 다른 그 대안으로서의 실시예들도 당해 기술 분야의 통상의 지식을 가진 자에게는 분명하다. 그러므로, 상기한 바는 첨부된 청구 범위에 의하여 정의된 본 발명의 범위를 한정하는 것으로 여겨서는 아니된다.

Claims (12)

  1. 그래픽 대상(braphical object)을 이동(move)시키기 위한 장치에 있어서, 디스플레이 우선순위(display priority)에 따라 복수의 그래픽 대상을 디스플레이하기 위한 디스플레이(display), 사용자 입력에 응답하여. 디스플레이된 제1 그래픽 대상을 이동시키기 위한 수단, 및 사용자 입력에 응답하여, 상기 그래픽 대상이 이동됨에 따라 상기 이동된 그래픽 대상이 디스플레이된 제2 그래픽 대상의 제1 부분 아래와 제2 부분 위에 디스플레이되도록 상기 이동된 그래픽 대상의 디스플레이 우선순위를 변경(modify)하기 위한 수단을 포함하는 그래픽 대상을 이동시키기 위한 장치.
  2. 제1항에 있어서, 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크(interlock)하는 지의 여부를 연산하기 위한 수단을 더 포함하는 그래픽 대상을 이동시키기 위한 장치.
  3. 제2항에 있어서, 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크하는 것으로 연산된 경우에, 상기 이동된 그래픽 대상이 더 이상 이동되지 않도록 하기 위한 수단을 더 포함하는 그래픽 대상을 이동시키기 위한 장치.
  4. 제2항에 있어서, 상기 이동된 그래픽 대상과 상기 디스플레이된 제2 그래픽 대상이 함께 이동되도록 상기 두 대상을 그룹짓기(grouping) 위한 수단을 더 포함하는 그래픽 대상을 이동시키기 위한 장치.
  5. 데이타 처리 시스템(data processing system)에 있어서, 디스플레이 우선순위에 따라 복수의 그래픽 대상을 디스플레이하기 위한 디스플레이, 데이타를 저장하기 위한 메모리, 상기 저장된 데이타를 처리하기 위한 프로세서 - 상기 프로세서는 사용자 입력에 응답하여, 디스플레이된 제1 그래픽 대상을 이동시키기 위한 수단을 포함함-, 및 사용자 입력에 응답하여, 상기 그래픽 대상이 이동됨에 따라 상기 이동된 그래픽 대상이 디스플레이된 제2 그래픽 대상의 제1 부분 아래와 제2 부분 위에 디스플레이되도록 상기 이동된 그래픽 대상의 디스플레이 우선순위를 변경하기 위한 수단을 포함하는 데이타 처리 시스템.
  6. 제5항에 있어서, 상기 프로세서는 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크하는지의 여부를 연산하기 위한 수단을 더 포함하는 데이타 처리 시스템.
  7. 제6항에 있어서, 상기 프로세서는 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크하는 것으로 연산된 경우에, 상기 이동된 그래픽 대상이 더 이상 이동되지 않도록 하기 위한 수단을 더 포함하는 데이타 처리 시스템.
  8. 제6항에 있어서, 상기 프로세서는 상기 이동된 그래픽 대상과 상기 디스플레이된 제2 그래픽 대상이 함께 이동되도록 상기 두 대상을 그룹짓기 위한 수단을 더 포함하는 데이타 처리 시스템.
  9. 그래픽 대상을 이동시키기 위한 방법에 있어서, 디스플레이 우선 순위에 따라 복수의 그래픽 대상을 디스플레이 상에 디스플레이하는 단계, 사용자 입력에 응답하여, 디스플레이된 제1 그래픽 대상을 이동시키는 단계, 및 그래픽 대상이 이동됨에 따라 상기 이동된 그래픽 대상이 디스플레이된 제2 그래픽 대상의 제1 부분 아래와 제2 부분 위에 디스플레이되도록 상기 이동된 그래픽 대상의 디스플레이 우선순위를 변경하는 단계를 포함하는 그래픽 대상을 이동시키기 위한 방법.
  10. 제9항에 있어서, 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크하는 지의 여부를 연산하는 단계를 더 포함하는 그래픽 대상을 이동시키기 위한 방법.
  11. 제10항에 있어서, 상기 이동된 그래픽 대상이 상기 디스플레이된 제2 그래픽 대상과 인터로크하는 것으로 연산된 경우에, 상기 이동된 그래픽 대상이 더 이상 이동되지 않도록 하는 단계를 더 포함하는 그래픽 대상을 이동시키기 위한 방법.
  12. 제10항에 있어서, 상기 이동된 그래픽 대상과 상기 디스플레이된 제2 그래픽 대상이 함께 이동되도록 상기 두 대상을 그룹짓는 단계를 더 포함하는 그래픽 대상을 이동시키기 위한 방법.
KR1019940034539A 1993-12-15 1994-12-13 그래픽 대상을 인터로크하기 위한 방법 및 장치 KR0150832B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/167,754 1993-12-15
US08/167,754 US5546524A (en) 1993-12-15 1993-12-15 Method and apparatus for interlocking graphical objects
US8/167754 1993-12-15

Publications (2)

Publication Number Publication Date
KR950020280A KR950020280A (ko) 1995-07-24
KR0150832B1 true KR0150832B1 (ko) 1998-10-15

Family

ID=22608685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940034539A KR0150832B1 (ko) 1993-12-15 1994-12-13 그래픽 대상을 인터로크하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US5546524A (ko)
EP (1) EP0658859B1 (ko)
JP (1) JP2750318B2 (ko)
KR (1) KR0150832B1 (ko)
DE (1) DE69429417T2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2692782B2 (ja) 1993-12-13 1997-12-17 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジェクトをリンクする方法
US6487588B1 (en) 1996-09-23 2002-11-26 International Business Machines Corporation Web browser which automatically loads selected types of graphics
US20020030843A1 (en) * 2000-02-02 2002-03-14 Tuli Raja Singh Portable high speed internet access device
US7068381B1 (en) 2000-02-02 2006-06-27 Raja Tuli Portable high speed internet access device
US7356570B1 (en) 2000-08-29 2008-04-08 Raja Tuli Portable high speed communication device
US7023572B2 (en) * 2000-02-02 2006-04-04 Raja Singh Tuli Portable high speed internet access device
US20020115477A1 (en) * 2001-02-13 2002-08-22 Raja Singh Portable high speed internet access device with scrolling
US7289244B2 (en) 2000-02-02 2007-10-30 Raja Singh Tuli Portable high speed internet access device
US6633314B1 (en) * 2000-02-02 2003-10-14 Raja Tuli Portable high speed internet device integrating cellular telephone and palm top computer
US6941382B1 (en) 2000-02-07 2005-09-06 Raja Tuli Portable high speed internet or desktop device
US6874009B1 (en) * 2000-02-16 2005-03-29 Raja Tuli Portable high speed internet device with user fees
JP3543942B2 (ja) * 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
US6842777B1 (en) 2000-10-03 2005-01-11 Raja Singh Tuli Methods and apparatuses for simultaneous access by multiple remote devices
US7191211B2 (en) * 2000-10-03 2007-03-13 Raja Tuli Portable high speed internet access device priority protocol
US6915327B1 (en) 2000-10-30 2005-07-05 Raja Singh Tuli Portable high speed communication device peripheral connectivity
US6928461B2 (en) 2001-01-24 2005-08-09 Raja Singh Tuli Portable high speed internet access device with encryption
US8176428B2 (en) 2002-12-03 2012-05-08 Datawind Net Access Corporation Portable internet access device back page cache
US8675951B2 (en) * 2007-05-11 2014-03-18 Three Pixels Wide Pty Ltd. Method and system for generating a 3D model

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8411579D0 (en) * 1984-05-05 1984-06-13 Ibm Graphic display systems
DE3650119T2 (de) * 1985-08-14 1995-03-30 Hitachi Ltd Verfahren zur Anzeigesteuerung für ein System mit mehreren Bildausschnitten.
JP2585515B2 (ja) * 1985-08-16 1997-02-26 株式会社日立製作所 図形描画方法
US5072412A (en) * 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4888583A (en) * 1988-03-14 1989-12-19 Ligocki Terry J Method and apparatus for rendering an image from data arranged in a constructive solid geometry format
US5355447A (en) * 1988-05-27 1994-10-11 Wang Laboratories, Inc. Method for color image reduction based upon determination of color components of pixels in neighboring blocks
ATE161979T1 (de) * 1988-05-27 1998-01-15 Kodak Ltd Dokumentenmappen-abbild zur anzeige in einem datenverarbeitungssystem
US5371845A (en) * 1990-04-27 1994-12-06 Ashlar, Inc. Technique for providing improved user feedback in an interactive drawing system
US5377317A (en) * 1991-12-20 1994-12-27 International Business Machines Corporation Method and apparatus for distinctively displaying windows on a computer display screen

Also Published As

Publication number Publication date
EP0658859A3 (en) 1996-02-14
EP0658859B1 (en) 2001-12-12
US5546524A (en) 1996-08-13
DE69429417D1 (de) 2002-01-24
JPH07200218A (ja) 1995-08-04
KR950020280A (ko) 1995-07-24
EP0658859A2 (en) 1995-06-21
DE69429417T2 (de) 2002-08-22
JP2750318B2 (ja) 1998-05-13

Similar Documents

Publication Publication Date Title
KR0150832B1 (ko) 그래픽 대상을 인터로크하기 위한 방법 및 장치
RU2377663C2 (ru) Динамическая архитектура окон
JP3030206B2 (ja) グラフィック多角形をクリップ領域にクリップする方法および装置
EP0698265B1 (en) Display compositing system
US5734806A (en) Method and apparatus for determining graphical object visibility
KR960016886B1 (ko) 다수의 3차원 객체로부터 가시 객체를 픽크하는 장치 및 방법과 그를 이용한 비디오 디스플레이 시스템
Bederson et al. Implementing a zooming user interface: experience building pad++
KR20060105422A (ko) 데스크톱 윈도우 관리자 합성
EP0693737A2 (en) Method and apparatus for managing multiprocessor graphical workload distribution
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
WO1994010639A1 (en) Updating objects displayed in a computer system
EP0837449A2 (en) Image processing system and method
US5926182A (en) Efficient rendering utilizing user defined shields and windows
JPH02287776A (ja) 大域レンダリングに階層ディスプレイリストを採用する方法
JPH09223244A (ja) 3次元オブジェクトを高速にレンダリングする方法および装置
CA2315302A1 (en) Three dimensional imaging system
JP2003115055A (ja) 画像生成装置
US5926183A (en) Efficient rendering utilizing user defined rooms and windows
US6392662B1 (en) Draw order preservation in a computer-implemented graphics system
JP2000331185A (ja) 画像処理方法、画像処理装置、及びプログラム提供媒体
JP2010066920A (ja) 3次元位置指定装置、3次元位置指定方法および3次元位置指定用プログラム、ならびにボクセルモデリング装置、ボクセルモデリング方法およびボクセルモデリング用プログラム
JP2897441B2 (ja) イメージ処理方法及び装置
JPH0793582A (ja) 画像処理方法及び装置
JPH0869539A (ja) 画像の領域エクステントを決める方法および装置
JPH1091811A (ja) グラフィカル画像再スケジューリング・メカニズム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130524

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20140527

Year of fee payment: 17

EXPY Expiration of term