ontolog-forum
[Top] [All Lists]

Re: [ontolog-forum] 2D drawing primitives (was: Foundation Ontology Prim

To: "[ontolog-forum]" <ontolog-forum@xxxxxxxxxxxxxxxx>, Ali Hashemi <ali.hashemi+ontolog@xxxxxxxxxxx>
From: Duane Nickull <dnickull@xxxxxxxxx>
Date: Fri, 5 Feb 2010 08:21:07 -0800
Message-id: <C7918573.AFC7%dnickull@xxxxxxxxx>
PAT:

So true.  Many people get confused when they see a screen with UML CVD’s and they can hit a button and generate stub code.  What they don’t realize is that the UML models and the stub code are both generated from the back end data model.  The screen driver and code generators both do their best to represent as accurately as possible the “view” of the model they have been asked to render.  Screen resolution then becomes the hindrance.

DuNW


On 2/4/10 4:23 PM, "Pat Hayes" <phayes@xxxxxxx> wrote:


On Feb 4, 2010, at 10:07 AM, Ali Hashemi wrote:

Hi Duane,

In every computer application, we'd actually be using "line-segment" and not the primitive "line." A line-segment would theoretically have a thickness of 0; in a computer system, it would be the smallest granularity of the software, so probably pixel.

Actually, no. It depends upon the system and what it is doing. CAD/CAM, architectural modeling, etc.., will all be using a mathematical notion of line. Similarly vector graphic systems, even some font systems use an underlying vector representation. Only some kind of screen graphics use lines based on pixel sets, and even there the issue is quiet complex, eg a line at a shallow angle to the screen pixel mesh may have to be given a two-pixel 'thickness' in some places. And then there are the lines defined by the edge of a color region, for example, which  occupy no pixels at all but are clearly visible on the screen.

A rectangle (A, B, C, D) where each is a pairs of points, would be a line if and only if   (A = B & C = D) || (B = C & D = A) || ... etc.  i.e. there were only 2 distinct points.
 
You might define a line with a thickness, say a "thick-line" as an element that you can reason over, and there, certainly the difference between a "rectangle" and a "thick-line" might be blurry to a human. However, given logical specifications, the difference is quite clear and non-existent - a "thick-line" and a "rectangle" would be isomorphic.

Not at all. It entirely depends upon what you are wanting to do with the concepts. It is quite conventional to distinguish lines from areas even when the lines are of nontrivial thickness. They are treated differently, for example, buy area-filling algorithms (the 'pouring paint' logo in a drawing system) as well as by edge-finding algorithms. Photoshop has a multitude of operations which create line-like artifacts in images, for another example.

Pat Hayes


Ali

On Wed, Feb 3, 2010 at 1:16 PM, Duane Nickull <dnickull@xxxxxxxxx> wrote:

 I am probably not the person to ask as I just got to this conclusion an hour ago ;-p
 
 A developers pragmatic perspective:
 
 IMO, the primitives are complete as abstract concepts however when you derive an instantiate-able class from these concepts, additional properties would provide the extensions.  For example, in the context of computer programming using 2D graphical user interfaces, atomic resolution (the granularity of the environment) would become relevant.  An abstract conceptual arc has an infinite number of points along it’s vector while an arc drawn across a 640*480 screen has only a fixed number of points possible.  The thickness of a line would be instantiated in the same way from a developers perspective. Four points would denote the upper x/y and lower x/y which when adding a fill, would form a line/rectangle?  
 
 The epiphany that a line is a type rectangle begs some interesting questions too when thinking concrete.  When does a 4 sided shape become described as a line rather than a rectangle?  I guess this is largely subjective.  
 
 See attached.
 
 Duane

 
 On 2/3/10 9:58 AM, "Ali Hashemi" <ali.hashemi+ontolog@xxxxxxxxxxx <http://ali.hashemi+ontolog@xxxxxxxxxxx> > wrote:
 
 
Duane,
 
 The primitives you (Adobe) are employing are very similar to Hilbert's primitive entities for geometry (point, line, plane) ( http://en.wikipedia.org/wiki/Hilbert%27s_axioms ). The fact that as you noticed, one could instead use a single primitive, a point, is exactly Tarksi's observation ( http://en.wikipedia.org/wiki/Tarski%27s_axioms ). Obviously, both theories also had a number of primitive relations (between and congruence).
 
 If I recall Michael's statement correctly, every graphical software tool today employs an extension of one of these two axiomatizations.
 
 While there is a purported logical level proof / mapping between the two, I've been unable to locate/unearth it from the archives. However, there is a clear and straight forward algebraic translation between statements in either formalism which is employed all the time.
 
 Cheers,
 Ali
 
 
 
 On Wed, Feb 3, 2010 at 12:27 PM, Duane Nickull <dnickull@xxxxxxxxx <http://dnickull@xxxxxxxxx> > wrote:
 
(note: changed heading for discussions related to 2D drawing primitives to allow others to filter messages)
 Sean:
 
 This is really great insight.  It got me thinking about the issue from a different perspective.  For a computer graphics person or developer, a point is often a single pixel whereby conceptually for an ontologist, you are quite correct in noting that it is a zero radius concept.    The people at my company (adobe) who work on Flex came up with the 5 basic drawing primitives, all based on a pixelated environment (point, fill, line (lines can have arcs in this case), ellipse and rectangle.  The line class is abstract but when sub-typed, has methods such as “lineTo(coord)” which can really be used to make any other shape.  Since a line itself could be expressed as an array of points, the point is truly the primitive here.
 
 Extending the thought, a line with an arc/curvature potential can be used to draw a circle or an ellipse if the line starts and ends at the same place.  How could I have missed this before???  It surprises me that just about every programming language with a graphics package has not adopted the ontological perspective on 2D drawing primitives.
 
 I love the Ontolog forum!!
 
 Duane
 
 On 2/3/10 5:14 AM, "sean barker" <sean.barker@xxxxxxxxxxxxx <http://sean.barker@xxxxxxxxxxxxx>  <http://sean.barker@xxxxxxxxxxxxx> > wrote:
 
 

 
 
Duane
 

 
Actually, circles, lines and points are all the same primitive - half-spaces of the plane: lines have zero curvature, points zero radius, and circles have finite radius and finite curvature. An ellipse is a circle after linear transformation.
 

 
A triangle is the intersection of three linear halfspaces.
 

 
BTW, point is not obviously a primitive, in the sense there are several different flavours of point - a 2D point is not the same as a 3D point, and a point in homogeneous co-ordinates is not quite the same as one in Cartesian co-ordinates. This is before you get to the more esoteric end of things, such a duality theory and geometry over algebraic systems other than the real numbers. I believe there is also a more generalised concept of a point called a turbine.
 

 
I'm not sure I can think of any more concrete example of the claim that an ontology is viewpoint specific
 
Sean Barker
 
 Bristol
 
  
 
 

From: ontolog-forum-bounces@xxxxxxxxxxxxxxxx <http://ontolog-forum-bounces@xxxxxxxxxxxxxxxx>  <http://ontolog-forum-bounces@xxxxxxxxxxxxxxxx>  [mailto:ontolog-forum-bounces@xxxxxxxxxxxxxxxx] On Behalf Of Duane Nickull
 
 Sent: 02 February 2010 19:54
 To: [ontolog-forum]
 Subject: Re: [ontolog-forum] Foundation Ontology Primitives
 

                     *** WARNING ***
 
   This message has originated outside your organisation,
   either from an external partner or the Global Internet.
       Keep this in mind if you answer this message.
 
 Inline:
 On 2/2/10 11:43 AM, "Matthew West" <dr.matthew.west@xxxxxxxxx <http://dr.matthew.west@xxxxxxxxx>  <http://dr.matthew.west@xxxxxxxxx> > wrote:
 
 
>  I hope that it will not actually be  necessary to try to precisely
 > define
 > the borderline between  primitive and non-primitive.
 
 A concept is primitive if it cannot be  completely defined in terms of
 concepts you already have  defined.
 

 Most OO programming languages are structured this way.  If there is any way to build such a concept with another class, then refactoring is often used.
 
 Take drawing primitives as an example.  There is one base primitive which might be “coordinate”.  This corresponds to a specific X,Y pair.  This is abstract so at this point it ignores all pixel resolutions etc but could generally taken to be based on a pixel grid.
 
 The next level down would be some primitive shapes.  Candidates might be Line, Circle, Ellipse, Rectangle, Square etc.  On closer examination, circle can be stated to be a specialized type of ellipse (one with a constant radius value) and a square can be declared as a specialized type of rectangle (one with equal side lengths within a fixed unit of precision, usually the pixel resolution when implemented).  Line might also be a candidate for rectangle (a rectangle with height:width ratio exceeding certain limits) but lines could also carry the added property of an arc or path.  Therefore the true primitives might be coordinate (or point), line, ellipse and rectangle.  This represents a context of pixelated screens however.  In vector graphics (SVG et al) the primitives may be different.
 
 A triangle then presents a test.  Is it another primitive of is it a specialized type of one of the existing graphic primitives.  One could create another primitive called “fill” that takes parameters of a “boundary” expressed in terms of lines.  This could then make up all other shapes such as polygon, triangle, star, etc..
 
 Duane
 
 ---
 Adobe LiveCycle Enterprise Architecture - http://www.adobe.com/products/livecycle/
 My TV Show - http://tv.adobe.com/show/duanes-world/
 My Blog – http://technoracle.blogspot.com/
 My Band – http://22ndcenturyofficial.com/
 Twitter – http://twitter.com/duanechaos
 
 
 

 ---
 Adobe LiveCycle Enterprise Architecture - http://www.adobe.com/products/livecycle/
 My TV Show - http://tv.adobe.com/show/duanes-world/
 My Blog – http://technoracle.blogspot.com/
 My Band – http://22ndcenturyofficial.com/
 Twitter – http://twitter.com/duanechaos
 
 
 _________________________________________________________________
 Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/
 Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/
 Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
 Shared Files: http://ontolog.cim3.net/file/
 Community Wiki: http://ontolog.cim3.net/wiki/
 To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J
 To Post: mailto:ontolog-forum@xxxxxxxxxxxxxxxx
  
 

 
 

 ---
 Adobe LiveCycle Enterprise Architecture - http://www.adobe.com/products/livecycle/
 My TV Show - http://tv.adobe.com/show/duanes-world/
 My Blog – http://technoracle.blogspot.com/
 My Band – http://22ndcenturyofficial.com/
 Twitter – http://twitter.com/duanechaos
  
 

 _________________________________________________________________
 Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/
 Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/
 Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
 Shared Files: http://ontolog.cim3.net/file/
 Community Wiki: http://ontolog.cim3.net/wiki/
 To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J
 To Post: mailto:ontolog-forum@xxxxxxxxxxxxxxxx
  



---
Adobe LiveCycle Enterprise Architecture - http://www.adobe.com/products/livecycle/
My TV Show - http://tv.adobe.com/show/duanes-world/
My Blog – http://technoracle.blogspot.com/
My Band – http://22ndcenturyofficial.com/
Twitter – http://twitter.com/duanechaos

_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/  
Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/  
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/ 
To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J
To Post: mailto:ontolog-forum@xxxxxxxxxxxxxxxx    (01)

<Prev in Thread] Current Thread [Next in Thread>