[QUIZ] Geometric Intersections (#233)

D

Daniel Moore

-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=
=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-

The three rules of Ruby Quiz:

1. Please do not post any solutions or spoiler discussion for this
quiz until 48 hours have elapsed from the time this message was
sent.

2. Support Ruby Quiz by submitting ideas and responses
as often as you can.

3. Enjoy!

Suggestion: A [QUIZ] in the subject of emails about the problem
helps everyone on Ruby Talk follow the discussion. Please reply to
the original quiz message, if you can.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

RSS Feed: http://rubyquiz.strd6.com/quizzes.rss

Suggestions?: http://rubyquiz.strd6.com/suggestions

-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=
=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-

## Geometric Intersections (#233)

HI=E2=9F=82RB

This week's quiz is to detect the intersections of various geometric
elements: circles, lines, and polygons.

A circle is defined by a point and a radius.

point =3D [6, 3]
radius =3D 5
a =3D Circle.new(point, radius)

A line can be defined by two points, or a point and a slope.

p1 =3D [0, 0]
p2 =3D [4, 2]
line =3D Line.new(p1, p2)
slope =3D 0.5
line =3D Line.new(p1, slope)

A polygon can be defined as a collection of points.

b1 =3D [2, 9]
b2 =3D [1, 3]
b3 =3D [7, 5]

b =3D Polygon.new(b1, b2, b3)

def intersect(a, b)
# Should return true or false indicating whether or not
# a and b intersect. a and b can be any circle, line or
# polygon.
end

You may also find it more natural to define a.intersect(b) or
b.intersect(a). The relation should be symmetric and reflexive, though
not transitive.

Which methods you choose to add to the geometric elements is up to
you, the only hard requirement is that the intersect method(s) return
the correct truth values.

Have fun!

Extra Credit: handle the "edge" cases of the polygon comprised of one
point (a single point) or two points (a line segment).

Extra Extra Credit: Provide a graphical and colorful output indicating
intersections.

--=20
-Daniel
http://rubyquiz.strd6.com
 
A

Andrea Dallera

Hei everybody,

here http://github.com/bolthar/intersect/ is my solution. You will need
freightrain (http://github.com/bolthar/freightrain/ to run it.
intersect.rb is a script that can be run with an argument, which is the
path to the filename containing the shapes definition. The file
'testfile' in the lib directory is an example of the syntax.
intersect_gui.rb launches a GUI application that you can play with.

--
Andrea Dallera
http://github.com/bolthar/freightrain
http://usingimho.wordpress.com


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

The three rules of Ruby Quiz:

1. Please do not post any solutions or spoiler discussion for this
quiz until 48 hours have elapsed from the time this message was
sent.

2. Support Ruby Quiz by submitting ideas and responses
as often as you can.

3. Enjoy!

Suggestion: A [QUIZ] in the subject of emails about the problem
helps everyone on Ruby Talk follow the discussion. Please reply to
the original quiz message, if you can.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

RSS Feed: http://rubyquiz.strd6.com/quizzes.rss

Suggestions?: http://rubyquiz.strd6.com/suggestions

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

## Geometric Intersections (#233)

HI⟂RB

This week's quiz is to detect the intersections of various geometric
elements: circles, lines, and polygons.

A circle is defined by a point and a radius.

point = [6, 3]
radius = 5
a = Circle.new(point, radius)

A line can be defined by two points, or a point and a slope.

p1 = [0, 0]
p2 = [4, 2]
line = Line.new(p1, p2)
slope = 0.5
line = Line.new(p1, slope)

A polygon can be defined as a collection of points.

b1 = [2, 9]
b2 = [1, 3]
b3 = [7, 5]

b = Polygon.new(b1, b2, b3)

def intersect(a, b)
# Should return true or false indicating whether or not
# a and b intersect. a and b can be any circle, line or
# polygon.
end

You may also find it more natural to define a.intersect(b) or
b.intersect(a). The relation should be symmetric and reflexive, though
not transitive.

Which methods you choose to add to the geometric elements is up to
you, the only hard requirement is that the intersect method(s) return
the correct truth values.

Have fun!

Extra Credit: handle the "edge" cases of the polygon comprised of one
point (a single point) or two points (a line segment).

Extra Extra Credit: Provide a graphical and colorful output indicating
intersections.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top