1 /*

2 ** License Applicability. Except to the extent portions of this file are

3 ** made subject to an alternative license as permitted in the SGI Free

4 ** Software License B, Version 1.1 (the "License"), the contents of this

5 ** file are subject only to the provisions of the License. You may not use

6 ** this file except in compliance with the License. You may obtain a copy

7 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600

8 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:

9 **

10 ** http://oss.sgi.com/projects/FreeB

11 **

12 ** Note that, as provided in the License, the Software is distributed on an

13 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS

14 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND

15 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A

16 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.

17 **

18 ** Original Code. The Original Code is: OpenGL Sample Implementation,

19 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,

20 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.

21 ** Copyright in any portions created by third parties is as indicated

22 ** elsewhere herein. All Rights Reserved.

23 **

24 ** Additional Notice Provisions: The application programming interfaces

25 ** established by SGI in conjunction with the Original Code are The

26 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released

27 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version

28 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X

29 ** Window System(R) (Version 1.3), released October 19, 1998. This software

30 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation

31 ** published by SGI, but has not been independently verified as being

32 ** compliant with the OpenGL(R) version 1.2.1 Specification.

33 **

34 */

35 /*

36 */

38 #include <stdlib.h>

39 #include <stdio.h>

44 {

52 /* return (B[0]-A[0])*(C[1]-A[1]) - (C[0]-A[0])*(B[1]-A[1]);*/

53 }

55 /*given a directed line A->B, and a point P,

56 *determine whether P is to the left of AB.

57 *the line A->B (imagine it has beedn extended both

58 *end to the infinity) divides the plan into two

59 *half planes. When we walk from A to B, one

60 *half is to the left and the other half is to the right.

61 *return 1 if P is to the left.

62 *if P is on AB, 0 is returned.

63 */

65 {

68 }

70 /*given two directed line: A -> B -> C, and another point P.

71 *determine whether P is to the left hand side of A->B->C.

72 *Think of BA and BC extended as two rays. So that the plane is

73 * divided into two parts. One part is to the left we walk from A

74 *to B and to C, the other part is to the right.

75 * In order for P to be the left, P must be either to the left

76 *of

77 */

79 {

85 {

87 }

88 else

90 }