Comments (3)
Seems to be working flawlessly. Good job.
However, I think it might not be required to redefined the wheel by creating a new vector2D class. Most methods are already available with the vector2D class from KicadModTree :
- all __ __ methods already exists
- length is .distance_to((0,0))
- perpendicularClockwise is .rotate(90)
- perpendicularCounterClockwise is .rotate(-90)
from that, rewritten the concern part without the need to create a new class :
# find the midpoint of start and end
mid = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]
# create vector from start to mid:
vec1 = Vector2D(mid[0] - start[0], mid[1] - start[1])
# create vector that's normal to vec1:
length_squared = pow(midX, 2) - pow(vec1.distance_to((0,0)), 2)
if length_squared < 0:
length_squared = 0
reversed = "1"
if reversed == "1":
vec2 = vec1.rotate(-90)
magnitude = sqrt(vec2[0]**2 + vec2[1]**2)
vec2 = Vector2D(vec2[0]/magnitude, vec2[1]/magnitude)
else:
vec2 = vec1.rotate(90)
magnitude = sqrt(vec2[0]**2 + vec2[1]**2)
vec2 = Vector2D(vec2[0]/magnitude, vec2[1]/magnitude)
# calculate the lenght from mid to centre using pythagoras:
length = sqrt(length_squared)
# calculate the centre using mid and vec2 with the correct length:
cen = Vector2D(mid) + vec2 * length
cen_start = cen - start
cen_end = cen - end
# calculate angle between cen_start and cen_end
dot_product = cen_start.x*cen_end.x + cen_start.y*cen_end.y
angle = acos(dot_product / (cen_start.distance_to((0,0)) * cen_end.distance_to((0,0))))
Can you create a PR with just the commit you made for this issue ? It will help to keep track of the different issues and their according corrections.
from jlc2kicad_lib.
Thanks a lot for your work, merged in 12c6860
from jlc2kicad_lib.
I made my version of the code and it seems to be working pretty well so far:
https://github.com/Xyntexx/JLC2KiCad_lib/tree/my_ARC_Fixes
from jlc2kicad_lib.
Related Issues (20)
- Deleted
- Arc conversion error
- Component OBJ/STEP file HOT 1
- Create vias using THT pads HOT 2
- Cannot connect symbol pins HOT 3
- Kicad plugin HOT 3
- Issue with STEP and rotation / translation HOT 4
- FR: Run this code for all parts and make a library available for download somewhere.
- Micro-USB Footprint: THT elements are missing in the footprint HOT 2
- Incorrect pin assignment when importing component C12087 HOT 3
- USB-C missing oval pin hole HOT 1
- Symbol labels missing when importing part C150858 HOT 4
- Windows 10, KiCad 7, Cannot Follow Instructions To Plugin Success , KicadModTree Not Sure. HOT 2
- Z-Level of footprint HOT 1
- Kicad Symbol has misplaced geometry HOT 2
- GUI available
- Incorrect link to datasheet in generated kicad_sym HOT 1
- Feature Request: Prefix Symbol, Footprint and 3D Model with LCSC number HOT 1
- Error During Install, system cannot find...futurize.exe.deleteme HOT 1
- Footprint add manufacturer and part name field
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jlc2kicad_lib.