delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to geda-user-bounces using -f |
X-Recipient: | geda-user AT delorie DOT com |
X-Mailer: | exmh version 2.8.0 04/21/2012 with nmh-1.6 |
X-Exmh-Isig-CompType: | repl |
X-Exmh-Isig-Folder: | inbox |
From: | karl AT aspodata DOT se |
To: | geda-user AT delorie DOT com |
Subject: | Re: [geda-user] Re: Is FreeRotateBuffer implemented in gschem? |
In-reply-to: | <alpine.DEB.2.20.1903081919370.4145@nimbus> |
References: | <201903081710 DOT x28HAAUG016981 AT delorie DOT com> <alpine DOT DEB DOT 2 DOT 20 DOT 1903081919370 DOT 4145 AT nimbus> |
Comments: | In-reply-to Roland Lutz <rlutz AT hedmen DOT org> |
message dated "Fri, 08 Mar 2019 19:19:51 +0100." | |
Mime-Version: | 1.0 |
Message-Id: | <20190308191019.787D085E7F7D@turkos.aspodata.se> |
Date: | Fri, 8 Mar 2019 20:10:19 +0100 (CET) |
X-Virus-Scanned: | ClamAV using ClamSMTP |
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 |
Roland Lutz: > On Fri, 8 Mar 2019, (mail AT crcomp DOT net) [via geda-user AT delorie DOT com] wrote: ... > > My goal to rotate a zenier diode by 45?? in gschem seems unobtainable > > at present. ... > def rotate(rev, angle): > for ob in rev.all_objects(): > if isinstance(ob.data(), xorn.storage.Arc): > ob.x, ob.y = (math.cos(angle) * ob.x - math.sin(angle) * ob.y, ... You calc cos() and sin() mult. times, perhaps caching the values would be beneficial, as you do for angle: > angle = float(sys.argv[2]) * math.pi / 180. ... In [1], I snap to gridpoints with (nearest grid point): sub rnd( $ ) { my $dbl = shift; int( $dbl + 0.5 ); } sub snap( $ ) { my $dbl = shift; rnd( $dbl/$grid ) * $grid; } ... $x2 += $pin_length * $cos; $y2 += $pin_length * $sin; $x2 = snap($x2); $y2 = snap($y2); ... It is well tested (for positive koordinates), see e.g. [2]. The only question is what grid size you want to use. Also you might want to keep text, labels and such horizontal or vertical. For complex symbols, it might be better to use a symbol generator that handles thoose details for you. Regards, /Karl Hammar [1] http://aspodata.se/git/openhw/pdftosym/pintosym.pl [2] http://aspodata.se/git/openhw/pdftosym/examples.pintosym/stm32f100lm.circle.LQFP100.sym
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |