delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/03/17/23:36:03

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
Date: Wed, 18 Mar 2015 04:35:49 +0100 (CET)
X-X-Sender: igor2 AT igor2priv
To: geda-user AT delorie DOT com
X-Debug: to=geda-user AT delorie DOT com from="gedau AT igor2 DOT repo DOT hu"
From: gedau AT igor2 DOT repo DOT hu
Subject: Re: [geda-user] pcb alternatives
In-Reply-To: <CAOFvGD6xHWE_M0E7Ho6XWZvROXYq9z7ES3pLq-98XPpPp=9Whg@mail.gmail.com>
Message-ID: <alpine.DEB.2.00.1503180423240.25799@igor2priv>
References: <CAHLh21Cdm=YZuqCQ+gCHSviJquahr6cnAQ-VBLR4BSs-nfHOig AT mail DOT gmail DOT com> <CAOFvGD4+4bHXNYLvePi70wb_1A4=dQgb_Ov3xBghoKbXQUsSGA AT mail DOT gmail DOT com> <5508413E DOT 4000405 AT ecosensory DOT com> <C2997FC5-EE8B-47E4-A8D5-24B6D22B2D64 AT noqsi DOT com> <20150317182617 DOT 22729 DOT qmail AT stuge DOT se>
<CAOFvGD7vgcVoHw6OeE98iA60755n8gbs6jbtv56O5+AcqWM1vQ AT mail DOT gmail DOT com> <20150317192343 DOT 26859 DOT qmail AT stuge DOT se> <CAOFvGD6xHWE_M0E7Ho6XWZvROXYq9z7ES3pLq-98XPpPp=9Whg AT mail DOT gmail DOT com>
User-Agent: Alpine 2.00 (DEB 1167 2008-08-23)
MIME-Version: 1.0
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com


On Tue, 17 Mar 2015, Jason White wrote:

> On Tue, Mar 17, 2015 at 3:23 PM, Peter Stuge <peter AT stuge DOT se> wrote:
>> Jason White wrote:
>>>> Which elementary objects would you use instead
>>>
>>> (1) to contain graphical primitives
>>
>> Which are the primitives you have in mind?
>
> Only 5 primitives in conjunction with groups that posses attributes
> are needed to represent an entire PCB design.
> * Line
> * Arc
> * Polygon
> * Circle
> * Text
>
> Each primitive defines its coordinates and layer relative to the group

Coordinates, rotation and scale. Rotation and scale is needed for texts, 
the rest could live with recalculated coords. However, once you add 
rot+scale to one element, it's easier to add them to all.

An alternative which might be cleaner: rotation and scale (or a 
transformation matrix) as a primitive that can have children. This also 
means you could rotate a group as a whole. If you think it further, this 
alternative suggests you don't store evencoordinates in the primitives, 
because there's a transformation that can displace its children.

This idea is not new, a lot of vector-graphics libs/formats do this.

I am not 100% convinced the second alternative is better. I think when 
implemented properly, both the first and the second represent a local 
optimum. The risk with the first is its limited approach; the main risks 
for PCB with the second might be:

  - it encourages users and tools to nest endless amount of 
transformations making the resulting PCB impossible to read/fix by 
hand/text editor

- it is a burden to scripting: the fixed cost of doing any sort of script 
that udnerstands the format increases drastcily, and if it has to 
manipulate the actual coordinates of existing objects, it becomes real 
hard

> I actually had started to collect my thoughts on this matter into a
> document. You can read more here if you'd like. Of course its
> unfinished, so the descriptions are a bit rough.
>
> * https://drive.google.com/file/d/0BwP0qhqyaTIIV2c1TnJYd2JvQms/view?usp=sharing

I might be too old-school for the modern world, but is it possible we do 
this sort of writeups at services that work without web2.0 and kilobytes 
of javascript? Preferrably something that works with wget and a plain old 
text editor or at least yields a plain old html.

Regards,

Igor2

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019