Write a Prolog program that stores information about geometric objects.
You must construct the geometric objects basing on simpler forms.
The objects to construct are:
- 2D Point
- Segment, can be represented by two 2D Points, or one 2D Point, a slope, and a length
- Square
- Rectangle
- Circle
Use Prolog’s more advanced features in this project: Lists, IO, and Structures.
Include extra test queries to try this code.
The program must be able to answer the following questions:
Is this segment parallel to this other line?
parallel(segment(point2d(x,y), point2d(x,y)), segment (point2d(x,y), point2d(x,y)))
Is this segment perpendicular to this other line?
perpendicular( segment (point2d(x,y), point2d(x,y)), segment (point2d(x,y), point2d(x,y)))
Is this segment contained in this polygon?
contained( segment(point2d(x,y), point2d(x,y)), circle(point2d(x,y),r))
Is this polygon contained in this other polygon?
contained( square(point2d(x,y), length), circle(point2d(x,y),r))
Does this polygon intersects this other polygon?
intersects( square(point2d(x,y), length), circle(point2d(x,y),r))
Is this segment vertical?
vertical(segment (point2d(x,y), point2d(x,y)))
Is this segment horizontal?
horizontal(segment(point2d(x,y), point2d(x,y)))
Is this point on the figure?
on(point2d(x,y), rectangle(point2d(x,y), point2d(x,y)))
Is this point in the figure?
in(point2d(x,y), circle(point2d(x,y),r))
Create at least these objects:
segment(point2d(5, 4), point2d(5, 5))
segment(point2d(4, 12), point2d(6, 10))
rectangle(point2d(9, 16), point2d(16, 14)) %Upper Left and Lower Right corners
rectangle(point2d(3, 6), point2d(10, 3)) %Upper Left and Lower Right corners
square(point2d(3, 13), 4) %Upper Left corner and length of side
square(point2d(11, 6), 2) %Upper Left corner and length of side
circle(point2d(12, 4), 3) %Center, radius
point2d(12,2)
point2d(4, 13)
point2d(20 ,1)