• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. Detect interception between line and arc or arc and arc

Stats

  • Replies 6
  • Subscribers 160
  • Views 16136
  • Members are here 0
More Content

Detect interception between line and arc or arc and arc

SkilSiao
SkilSiao over 12 years ago

Hi All, 

is there a function to detect any intersection between straight line and arc?

Given that both of the objects are Lines... 

the axl_ol_ol2 function is able to detect straight line and straight line intersection only. 

  • Sign in to reply
  • Cancel
  • knuhcrek
    knuhcrek over 12 years ago

    That function merely fixes axl_ol_ol, as you have found. What is needed is more robust function that can compare any two segments and return nil (if there is no intersection) or a list of intersection points, after you screened out the special cases where the lines or arcs are identical. Should easily be handled by basic trigonometry  and some equation-solving.

    line-line  --  nil or 1 intersection point

    line-arc   --  nil or 1 or 2 i-points

    arc-line   --  nil or 1 or 2 i-points

    arc-arc    --  nil or 1 or 2  i-points

     

    Chris Walters

    rusty former Cadence guru

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • SkilSiao
    SkilSiao over 12 years ago

    Hi Christ,

    Thanks for the suggestion. 

    It seems like no existing function can achieve that and we need to write our own.

    one of the algo i am thinking of is like this:

    break the arcs into multiple (i) segments, then write a for i loop to:

    1. get the start and end point of each segment.

    2. use axl_ol_ol2 to get the intersection point and distance with the line or another arc's line segment.

    3. store the interception points or distances (if no intersection). 

    after the for loop, we can have the intersection points or min distance.

    larger the i, more accurate the result.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • fxffxf
    fxffxf over 12 years ago
    If both objects are dbids then try axlAirGap; the 'enhanced option should provide additional info.
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • eDave
    eDave over 12 years ago

    See attached.

    DEFn_arcLineSegmentIntersections - find the intersection points between an arc and a line segment

    DEFn_arcArcIntersections - find the intersection points of two arcs

    DEFn_circleLineIntersections - find the intersection points of an circle and a line

    DEFn_circleCircleIntersections - find the intersection points of two circles

     

    DE_arcIntersections.zip
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • SkilSiao
    SkilSiao over 12 years ago

    Hi eDave, Thank you very much. (I haven't tried out though)

    you have always been very helpful.  =) 

    Hi fxffxf, axlAirGap does NOT support lines dbid and always returns nil

    you may want to tried out, assume aa and bb are two dbids of Lines on Etch/Surface,

    Skill>axlAirGap(aa bb nil 'enhanced)

    nil

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information