acer

32343 Reputation

29 Badges

19 years, 327 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by acer

The OP wrote, in a followup comment, "how to draw all the lines P1P2,P2P3,P3P4, etc,  and the incirles of centers C1, C2.."

The OP's earlier code did not define C2, however, so I have made a guess as to that (and to the incircles).

restart;
with(LinearAlgebra):
with(plots):
with(plottools,line):
with(plottools,circle):

EqBIS := proc(P, U, V) local a, eq1, M1, t, PU, PV, bissec1; a := (P - U)/LinearAlgebra:-Norm(P - U, 2) + (P - V)/LinearAlgebra:-Norm(P - V, 2); M1 := P + a*t; eq1 := op(eliminate({x = M1[1], y = M1[2]}, t)); return op(eq1[2]); end proc:

A := <4, 8>;
B := <4, 2>;
C := <1, 4>;
EqBIS(A, B, C);

A := Vector(2, {(1) = 4, (2) = 8})

B := Vector(2, {(1) = 4, (2) = 2})

C := Vector(2, {(1) = 1, (2) = 4})

-5*y-20+15*x

Cen := proc(M, N, R) local eq1, eq2, sol; eq1 := EqBIS(M, N, R) = 0; eq2 := EqBIS(N, M, R) = 0; sol := simplify(solve({eq1, eq2}, {x, y})); return [subs(sol, x), subs(sol, y)]; end proc:
Cen(A,B,C):

CircleParm := t -> [(-t^2 + 1)/(t^2 + 1), 2*t/(t^2 + 1)];

proc (t) options operator, arrow; [(-t^2+1)/(t^2+1), 2*t/(t^2+1)] end proc

P1 := (CircleParm(1/4));

P2 := (CircleParm(5));
P3 := (CircleParm(-1/10));
P4 := (CircleParm(-3/2));

[15/17, 8/17]

[-12/13, 5/13]

[99/101, -20/101]

[-5/13, -12/13]

C1 := Cen(<P1>, <P2>, <P3>);

[(1/44642)*(1066*17^(1/2)-255*26^(1/2))*101^(1/2)-(1/442)*26^(1/2)*17^(1/2), (1/44642)*(156*17^(1/2)-833*26^(1/2))*101^(1/2)+(21/442)*26^(1/2)*17^(1/2)]

C2 := Cen(<P4>, <P2>, <P3>);

[(1/2626)*(15*2^(1/2)+34)*1313^(1/2)-(17/26)*2^(1/2), (1/2626)*(49*2^(1/2)-64)*1313^(1/2)-(7/26)*2^(1/2)]

Pts := [P1, P2, P3, P4, C1, C2];

[[15/17, 8/17], [-12/13, 5/13], [99/101, -20/101], [-5/13, -12/13], [(1/44642)*(1066*17^(1/2)-255*26^(1/2))*101^(1/2)-(1/442)*26^(1/2)*17^(1/2), (1/44642)*(156*17^(1/2)-833*26^(1/2))*101^(1/2)+(21/442)*26^(1/2)*17^(1/2)], [(1/2626)*(15*2^(1/2)+34)*1313^(1/2)-(17/26)*2^(1/2), (1/2626)*(49*2^(1/2)-64)*1313^(1/2)-(7/26)*2^(1/2)]]

rr := proc(p1,p2,p3) local dd,d12,d23,d31;
        dd := (a,b)->sqrt((b[2]-a[2])^2+(b[1]-a[1])^2);
        (d12,d23,d31) := dd(p1,p2),dd(p2,p3),dd(p3,p1);
        (s->sqrt((s-d12)*(s-d23)*(s-d31)/s))((d12+d23+d31)/2);
      end proc:

display(implicitplot([x^2 + y^2 - 1], x = -2 .. 2, y = -4 .. 2, colour = [blue], scaling = constrained), pointplot(Pts, symbolsize = 16),
        line(P1,P2),line(P2,P3),line(P3,P1),circle(C1,rr(P1,P2,P3)),
        line(P4,P2),line(P2,P3),line(P3,P4),circle(C2,rr(P4,P2,P3)));

Download jamet_ac2.mw

@JAMET You now seem to be calling plot instead of plots:-pointplot.

Why did you change it?

(You could attach a worksheet containing the code you actually use. That could save effort, all round.)

I am unable to get either of the pair of tubeplots to be rendered in black, using Maple 2022.1 for ubuntu 18.04 LTS, with hardware acceleration turned either on or off in the GUI Options.

Why not simply provide your full requirenents on your other, recent Question on this?

You could zip-compress-archive the file, then upload and attach the .zip file using the green up-arrow in the Mapleprimes editor.

@Carl Love A PlotComponent allows for properties (clickx  clicky) to be queried programatically. Those can be used with a single right-click, or click&drag.

The `Explore` command allows for this by having two (or one) parameters be specified via its `markers` option. Additionally, the corresponding Sliders may be shown, or suppressed. See ?Explore as well as ?examples,Explore .

The above have a notion that the scale of the parameters is the same as the scale of the 2D plot. Naturally, if the interactive plot is 3D then such marker-style interaction (on a 2D plot area) would need to be in a separate plot, by the side say.

I'm away from a computer until this coming Sunday  and then again from Mon-Fri. Apologies not being to show examples by code.

[edit. If I can paste properly...]

The parameter values taken from a 2D plotting area can be used as simply the x,y values of an input point. Or they can be used as a pair of parameters used in some quite different manner of your own devising.

IIRC, here's an Explore app that used markers to grab an x-y point input on-the-fly,

https://www.maplesoft.com/Applications/Detail.aspx?id=153552

And here's an embedded components app that also used clickx,clicky (but not via Explore) to control parameters,

https://www.maplesoft.com/Applications/Detail.aspx?id=153557

 

As far as a (forcing) programmatic transformation goes, do you care whether it is always valid?

ps. Is this entirely different from all your earlier queries on 2-argument arctan, and if not then why split up the topic?

@Christian Wolinski I believe that the OP is aware that he can write it out, with the body of the inner procedure hard-coded. Ie, more tersely,

f := a -> (b -> a/b);

      f := a -> b -> a/b

f(A)(B);

            A/B

I believe that the OP's issue was in programmatically building f such that the body of the inner operator was constructed from the predefined expression e.

@vv If g changes then the efficient course would be to rebuild dgdx2. (The efficiency alluded to is the cost of repeatedly invoking D for each call to dgdx, not the cost of construction.)

In terms of simplicity but with a similar inefficiency, forming dgdx2 once, prior to defining g, makes it behave like dgdx1, ie. consistent results. (But it's still simpler and more straightforward.) Eg,

dgdx1:=(x,T) -> D[1](g)(x,T);
dgdx2:=  D[1](g);

g := (x, T) -> T*x + x^2:  #just an example
dgdx1(1, 2);
dgdx2(1, 2);

g := (x, T) -> T*x + 7*x^2:
dgdx1(1, 2);
dgdx2(1, 2);

@Saha 

You've accidentally pasted Tom's 1D plaintext code in as 2D Input, without altering it to avoid (incorrect) implicit multiplications.

You've changed the boundary conditions in two different ways (both invalid).

You've changed f(x) in one of the equations.

@vv If g has already been defined then I don't see why you'd want to incur the cost of having dgdx invoke D each time it gets called, instead of simply assigning,

   dgdx := D[1](g);

@FDS What I gave originally was 4x1 Matrix. I've edited it to return a column Vector.

@mehran rajabi You could upload and attach the worksheet in which the plot is not displayed for those commands...

@Carl Love For no reason except that I think this looks nifty.

(edit: one reason is that shading=xyz can convey some depth, which is less clear with a monochromatic curve.)

Done in Maple 2018.2 for Linux.

restart:

with(DocumentTools): with(DocumentTools:-Layout):
with(DocumentTools:-Components): with(plots,display):

Rev:=proc(P::specfunc(PLOT3D))
       InsertContent(Worksheet(Table(
         alignment=center,width=380,widthmode=pixels,Column(),
         Row(Cell(Textfield(InlinePlot(scale=1.3,height=550,width=650,ytrans=3.5,
                                       display(P,axis=[color="DarkGrey"]),
                                       fillcolor="Black",showborders=false)),
                  fillcolor="Black")))));
         NULL;
end proc:

 

Digits:=15:

V:=[x,y,z]:

eqs:=diff~(V(t),t)=~[35*(y-x),-x*z-7*x+28*y,x*y-3*z](t);

[diff(x(t), t) = 35*y(t)-35*x(t), diff(y(t), t) = -x(t)*z(t)-7*x(t)+28*y(t), diff(z(t), t) = x(t)*y(t)-3*z(t)]

sol:=dsolve({eqs[], (V(0)=~ V||~0)[]},numeric,maxfun=-1,parameters=V||~0):

sol(parameters=['rand(0.0..1.)()'$3]);

[x0 = .107335941150510, y0 = .767616132399701, z0 = .244155091492448]

P:=subsindets(
     subsindets(plots:-odeplot(sol,V(t),t=0..50,numpoints=15000,
                               thickness=0,transparency=0.5,axes=frame,
                               axis=[thickness=0],orientation=[-70,70,0]),
                specfunc({COLOUR,AXESLABELS}),()->NULL),
     specfunc(THICKNESS),()->THICKNESS(0.1)):

 

Rev(P);

Download deplot3drev.mw

@dvilla It is possible to programmatically embed a plot with a specified zoom scaling (zoom) factor and adjusted vertical (or horizontal) offset within the inlined plotting window. In other words, to take the burden off of the end-user, and to allow you to enforce the initial aspect.

In the following worksheet the plots get "displayed" (even from scratch) just as shown. I appreciate such programatic vertical trimming of blank white space, if I do not intend to rotate the 3D plot head-over-heels.

prog_zoomtrans.mw

Unfortunately this forum's backend baulks as rendering this worksheet.

Those wrapping commands which force the scaling/offset/etc could easily be made into a reusable procedure, which could also be optionally hidden -- say in the Startup region of the worksheet.

An alternative is to rescale the formula and then force new tickmarks, but it can get complicated to implement robustly as a general mechanism. 

I used Maple 2022.1, and got no disk artefact. But that's a separate issue to getting the zoom, offset, aspect ration, etc, just as you want.

First 102 103 104 105 106 107 108 Last Page 104 of 592