2016-05-08 9 views
0

Ich versuche, einen Kreis mit einem Offset in gnuplot zu zeichnen. Ich kann das tun, indem ich den Offset in den Gleichungen addiere, wie unten gezeigt. Ich möchte jedoch etwas komplizierteres Rendering durchführen, z. Rendern Sie mehrere Kreise mit jeweils unterschiedlichem Winkelversatz um einen Offset-Ursprung. Das Skript wäre viel umfassender, wenn ich das täte, indem ich den Ursprung des Plots jedes Kreises ändere.Einstellen des Ursprungs in Gnuplot, wenn im polaren/parametrischen Modus

ich mit einem einzigen Kreis mich entschieden:

set size square 
set parametric 
set xrange [-2:2] 
set yrange [-2:2] 
set trange [0:2*pi] 
set multiplot 

# circle centered at 0,0 
fx(t) = sin(t) 
fy(t) = cos(t) 
plot fx(t), fy(t) 

# circle centered at -1,-1 
fx(t) = -1 + sin(t) 
fy(t) = -1 + cos(t) 
plot fx(t), fy(t) 

# can't center this circle properly at 1,1 
set origin 0.113, 0.23 
fx(t) = sin(t) 
fy(t) = cos(t) 
plot fx(t), fy(t) 

einen Versatz von (1, 1) Um das zu erreichen, ich habe einen Ursprung von (0,113, 0,233) zu verwenden. Also, was ist die Gleichung, die diese Koordinaten gibt? Ich habe verschiedene sin/cos-Kombinationen ausprobiert, da dies mit Polarkoordinaten zusammenhängen könnte, aber keinen Mangel. Die gleiche genaue Situation tritt auf, wenn der polare Modus anstelle des parametrischen Modus verwendet wird.

Antwort

1

Überprüfen Sie die Online-Hilfe über origin, es ist eine Anzeigeoption und keine Plot-Option.

Es gibt keinen Grund, warum das nicht anders funktionieren sollte. Sie können sich von diesem Code inspirieren lassen:

CENTER_X="1.5 3.2 -2.4" 
CENTER_Y="-2.3 1.2 -0.4" 
ANGLE="0 45 180" 
RADIUS="1 1.2 0.8" 
set parametric 
set angle degrees 
set trange [0:315] 
set xrange [-6:6] 
set yrange [-6:6] 
set size ratio -1 
set multiplot 
unset key 
do for [i=1:words(CENTER_X)] { 
plot word(CENTER_X,i)+word(RADIUS,i)*cos(word(ANGLE,i)+t),word(CENTER_Y,i)+word(RADIUS,i)*sin(word(ANGLE,i)+t) 
} 
unset multiplot 
Verwandte Themen