-2

I'm looking for some methodology/algorithm to identify geometry constructions doing with compass and straightedge. In more sophisticated tools, constructing a perpendicular bisector, could be done with a specific tool. In my case I will get a sequence of lines and arcs (drawn by compass) only, via a computer-based drawing tool. How is it possible to identify that whether there's a perpendicular bisector constructed using that tool? Is there an existing algorithm or methodology for that?

In research literature I found one way of achieving this is to record mouse events and inspecting that (no concrete methodology described).

In my case, I need identify that perpendicular bisector by the sequence of lines and arcs.

PS: perpendicular bisector is one of the constructions I need to identify. There are several others such as angle bisector, Perpendicular across a point on line etc.

Appreciate your answers on this!

bswije
  • 1
  • 2
  • Sorry, I am a bit lost. Are we talking about some CAD tool or real-world constructions? Checking for perpendicularity of two lines and finding the midpoint of a line segment is quite straight-forward if you know the coordinates. So I don't see the question. Please clarify your input and desired output. – Nico Schertler Nov 02 '16 at 15:09
  • Hi Nico, The tool is a primitive computer-based tool, which can draw lines and arcs. It's true that perpendicularity can be determined through coordinates. But I'm searching for a methodology that perpendicular is constructed properly (arcs are properly drawn etc.). Because this is relevant to a e-learning tool. – bswije Nov 02 '16 at 16:28
  • You say you have a sequence of lines and arcs. What format are these in - what data structure? Please add a sample of this data to your question. And clarify whether the input method for these lines and arcs is constrained - i.e. if the user draws a line at 88deg to another line, is that considered a right angle? – Julian Mann Nov 02 '16 at 16:48
  • Hi @Julian, In the system lines and arcs are represented in XML format. (SVG). So SVG-lines and SVG-Paths will represent, lines and arcs in the construction respectively. For internal processing raw constructions are expected t feed. Hence there's no constrains, and internally system is expected to determine 88 deg should be considered as right-angle or not. – bswije Nov 02 '16 at 18:53
  • Sorry, but this is off topic, not code related, see http://stackoverflow.com/help/on-topic – kebs Nov 04 '16 at 09:37

1 Answers1

0

If you have a sufficiently advanced description of your construction sequence, you can do randomized proving: take the construction sequence, wriggle some of the input points and check whether the result fits with the angular bisector or whatever, up to small numeric errors. If this is the case for a large number of randomized input positions, you can be reasonably sure that the constructed result is what you think it is.

An SVG description of the resulting construction (as mentioned in some comments) will not be sufficient for this goal, though. At least unless the SVG contains additional data in excess to what the spec requires. If you have an arc in SVG, that doesn't tell you how the arc was constructed.

I know Cinderella does randomized proving internally. If you draw the angle bisector using the built-in tool for it, and then do a ruler-and-compass construction of that same angle bisector, Cinderella will not add a second line, as it can prove internally that the two lines are identical.

I'm currently working on Cinderella internals as part of my job. Actually I'm improving its suitability for certain e-learning environments. So if you have e-learning environments in mind, I suggest you check out Cinderella and its browser-friendly child project CindyJS. The latter doesn't have randomized proving yet, put work towards that goal is underway.

MvG
  • 57,380
  • 22
  • 148
  • 276