Kevin,
Your description was good; my hands were faster than my brain.
Good to hear that you managed to solve _despite_ my help.
michele
On Monday, February 27, 2017 at 2:42:41 AM UTC+1, Kevin Pauba wrote:
>
> Thanks, Michele.
>
> With your earlier post, I noticed the difference in the solution and I was
> able to modify the code to work as I needed -- I figured I just didn't
> describe it well enough. I had everything working perfectly on Friday.
>
> Thanks again for your assistance.
>
>
>
> On Sunday, February 26, 2017 at 12:15:32 PM UTC-6, Michele Zaffalon wrote:
>>
>> Hi Kevin,
>> I mixed up the coordinates and the solution I gave you is wrong. To make
>> it up to you, here is the complete (and this time I hope correct) solution.
>>
>> from sympy import init_session
>> init_session()
>> y, x0 = symbols("y, x0", real=True)
>> # I define d positive, but the equation for the circle is
>> # (x-x0)^2 + (y+d)^2 = r^2
>> d, m, r = symbols("d, m, r", positive=True)
>>
>> #method I
>> # write explicit equation for circle
>> x = x0 - sqrt(r**2 - (y + d)**2)
>> # find the point on circle for which slope dx/dy = 1/m
>> # is the same as line x = 1/m * y
>> y_v = solve(diff(x,y) - 1/m, y)[0]
>> # find x coordinate of tangent
>> x_v = y_v / m
>> # from x = x0 - sqrt(r**2 - (y + d)**2)
>> # find center of circle
>> x0_v = simplify(x_v + sqrt(r**2 - (y_v + d)**2))
>>
>> # check
>> x = symbols("x", real=True)
>> y = -d + sqrt(r**2 - (x - x0_v)**2)
>> # the derivative at point x_v should be m
>> diff(y, x).subs(x, x_v)
>>
>>
>>
>>
>> On Thursday, February 23, 2017 at 1:40:21 PM UTC+1, Kevin Pauba wrote:
>>>
>>> Wow, thanks Michele!
>>>
>>> Having two solutions will help me to understand sympy even better. I
>>> really, really appreciate your replies and I'll be plugging in this code
>>> interactively line-by-line along with the docs to see how every argument
>>> and line contributes to the solution.
>>>
>>> On Thursday, February 23, 2017 at 12:49:58 AM UTC-6, Michele Zaffalon
>>> wrote:
>>>>
>>>> Another quicker way is to impose that the circle slope is the same as
>>>> the line.
>>>> The first expression is the explicit equation for the top part of the
>>>> circle. Then I impose that the slope is that of the line and I find the
>>>> tangent `x` position.
>>>>
>>>> y = y0 + sqrt(r**2 - (x-d)**2)
>>>> solve(diff(y,x) - m, x)
>>>>
>>>>
>>>> On Thursday, February 23, 2017 at 7:40:17 AM UTC+1, Michele Zaffalon
>>>> wrote:
>>>>>
>>>>> This is how I would do analytically: the equation for the circle is
>>>>> (x-d)^2 + (y-y0)^2 = r^2, a circle of radius `r`, centered at `(d,y0)`.
>>>>> You
>>>>> impose that `y` that belongs to the circle, belongs to the line as well.
>>>>> To
>>>>> do this, you substitute the equation for the line in that for the circle
>>>>> and you obtain `expr` below (y -> mx).
>>>>> If you solve this second order equation, you find two solutions
>>>>> because in general, the line crosses the circle in two points (or never).
>>>>> You want these two points to be coincident because this is an alternative
>>>>> definition of tangent and you solve for `y0`. There are again two
>>>>> solutions, one with the circle to the right of the line, one to the left.
>>>>> You should pick the correct one: on my computer, this is the second
>>>>> solution.
>>>>> If you now substitute this into any of `sols`, you will find your
>>>>> tangent `x` point.
>>>>> Does this help?
>>>>>
>>>>> x, y, d, y0 = symbols("x, y, d, y0", real=True)
>>>>> m, r = symbols("m, r", positive=True)
>>>>> expr = (x+d)**2 + (m*x-y0)**2 - r**2
>>>>> sols = solve(expr, x)
>>>>> y0_sols = solve(sols[0] - sols[1], y0)
>>>>> simplify(sols[1].subs(y0, y0_sol[1]))
>>>>>
>>>>>
>>>>>
>>>>> On Thursday, February 23, 2017 at 6:54:12 AM UTC+1, Kevin Pauba wrote:
>>>>>>
>>>>>> I'm trying to wrap my brain around sympy and am looking for a little
>>>>>> help.
>>>>>>
>>>>>> Let's say I have a line 'y=m*x' (y-intercept is zero). Let's also
>>>>>> say I have a circle of radius 'r' whose center is constrained to be
>>>>>> along a
>>>>>> horizontal line a specific distance 'd' below the x-axis.
>>>>>> Given m, r and d, how might I code sympy to determine the circle's
>>>>>> x-value where the given line is tangent to the circle (i'm only
>>>>>> interested
>>>>>> in the tangent on the left side of the circle). I also would like to
>>>>>> determine the (x,y) of the tangent point.
>>>>>>
>>>>>> Feel free to nudge me in the right direction if you don't have the
>>>>>> time to offer a more complete solution.
>>>>>>
>>>>>> For those interested, my interest is related to the design a cam
>>>>>> profile that uses a roller-type follower.
>>>>>>
>>>>>
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/0671b0f2-58a4-4885-b7d2-862111507e27%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.