BasicGeometricCalc Intersect_​​circle_​​line bad results

Home Forums Problems and solutions in GDL Others BasicGeometricCalc Intersect_​circle_​line bad results

This topic contains 8 replies, has 3 voices, and was last updated by  Péter Baksa 1 day, 22 hours ago.

  • Author
    Posts
  • #4838

    John Peterson
    Participant

    I’ve been starting to use the geometric calculator for GDL scripts. My first attempt worked great for finding the intersection of two circles.

    My next attempt at finding the intersection of a line and a circle does not work. The line starts at .5,0 and the vector directional point is .5,1. The circle center points are 0,0 and the radius is 1.5. Below, you can see I have drawn the circle, the line, and had the calculator provide the two intersection points. It’s a bit hard to see, but they hotspots do not fall on the circle as they should. I’m using 22 but have not installed the latest patch that just became available last week. Haven’t had time to comb through the release notes. Snip of the code is below.

    (from master script) INTERSECT_CIRCLE_LINE = 5

    (from 2d script)

    line2 .5, 0, .5, 1
    circle2 0, 0, 1.5

    call “BasicGeometricCalc” PARAMETERS iFunction=INTERSECT_CIRCLE_LINE,
    xo=0,
    yo=0,
    ro=1.5,
    linePx=.5,
    linePy=0,
    lineVx=.5,
    lineVy=1,
    RETURNED_PARAMETERS ipx1,ipy1,ipx2,ipy2,state

    if state=2 then
    hotspot2 ipx1,ipy1
    hotspot2 ipx2,ipy2
    endif

    if state=1 then
    hotspot2 ipx1,ipy1
    endif

    Many thanks, JP

  • #4840

    Lingwisyer GC
    Participant

    I have never used it, but is it suppose to work with line extensions? Even if the return is that your lines do not intersect.

    Ling.

    Edit: Ah. Reading the documentation it is circle to vector, so it is suppose to work.

    AC18-22 AUS 5009
    Self-taught, bend it till it breaks.
    Win7 | E5620 x 2 | 24GB | P620

  • #4841

    Lingwisyer GC
    Participant

    Is there any change if your line is not orthogonal?

    AC18-22 AUS 5009
    Self-taught, bend it till it breaks.
    Win7 | E5620 x 2 | 24GB | P620

  • #4842

    Péter Baksa
    Participant

    Hi,

    each input “direction vector” of BasicGeometricCalc has to be a unit vector (length = 1.0 meter). You get a unit vector by dividing each coordinate with the length.
    The returned vectors are unit vectors too.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

  • #4848

    John Peterson
    Participant

    I did make my vector exactly 1 meter from the reference point. It obviously does not work, and if the input needs to be something else that involves extra math, that’s just plain stupid.

    Many thanks, JP

  • #4849

    Péter Baksa
    Participant

    Hi John,

    The vector is not the endpoint of the vector, just the vector itself. So in your case if (0.5, 0) and (0.5, 1) are two points on the line, the vector is (0, 1).

    BasicGeometricCalc can return the unit vector between two points:

    call "BasicGeometricCalc" parameters iFunction = 1,
                                          Point1X = toX,   Point1Y = toY,   Point1Z = toZ,
                                          Point2X = fromX, Point2Y = fromY, Point2Z = fromZ,
                      returned_parameters Vx, Vy, Vz, distance

    Vx, Vy, Vz will be the unit vector, and distance will be the distance between Point1 and Point2.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

    • #4850

      John Peterson
      Participant

      Thank you Peter!! That is exactly it. Thanks for taking the time to set me straight.

      Many thanks, JP

      Many thanks, JP

    • #4852

      John Peterson
      Participant

      Good morning Peter! May I impose upon you again for an explanation? I’m now using the DIRECTION_SEGMENT function because I can’t use a curve in a tube path. I have the start, end, and included angle of the arc segment as shown in the diagram. I provided a tolerance. I used vardim1 to see how many items were in the array. The result was 6. I followed the instructions to find the various x,y coordinates. The resulting points are nowhere near to points on that curve, or the curve inverted. They don’t have any reference to the curve whatsoever. What i did notice as the distance from the origin to point one and the same to point two was exactly 1 meter. The distance to the third point was not. Can you offer a bit of advice please?

      Strike that. I found the problem. The code is wrong on the website. It lists DIRECTION_SEGMENT as the function. The name sounded funny to me so i refereed to the index and there was one that made a lot more sense called SEGMENT_ARC. That worked perfectly. Can you please alert someone as to the error and also please tell them to make the pictures larger and more legible. They are almost impossible to read.

      Many thanks, JP

  • #4855

    Péter Baksa
    Participant

    Thank you, Using BasicGeometricCalc macro is updated with clickable image links.

    Péter Baksa
    Software Engineer, Library Team
    GRAPHISOFT SE

You must be logged in to reply to this topic.