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: Message-ID: References: <5508413E DOT 4000405 AT ecosensory DOT com> <20150317182617 DOT 22729 DOT qmail AT stuge DOT se> <20150317192343 DOT 26859 DOT qmail AT stuge DOT se> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed 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 Precedence: bulk On Tue, 17 Mar 2015, Jason White wrote: > On Tue, Mar 17, 2015 at 3:23 PM, Peter Stuge 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