Hei!
Har lekt meg litt i påsken med å prøve å parameterisere en torus, og kom etter en stund frem til denne funksjonen:
f(x,y)=[Rcosx+rcosxcosy, Rsinx+rsinxcosy, rsiny]
eller
[tex]f(\theta,\phi)=[Rcos \theta+rcos\theta cos\phi, Rsin\theta+rsin\theta cos\phi, rsin\phi][/tex],
hvor R er radius til absolutt senter, og r er radius til "dekket". Mao. bør R>r.
Nedsiden er at jeg ikke aner hvordan jeg kan få plottet den, så jeg vet ikke om jeg faktisk fikk det til! Så jeg hadde satt veldig pris på om noen kunne pekt meg i riktig retning, eller evt. plottet den og gitt meg et screenshot.
Trenger hjelp med 3d-plotting
Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa
Jeg har faktisk tilgang til det, men jeg aner ikke hvordan jeg bruker det. Hadde håpt på en enkel løsning, men det virker som at jeg må lære meg hele matlabspråket før jeg kan komme noen vei.Markonan wrote:Vet ikke om noen gratisprogrammer for å plotte noe sånt. Har du tilgang på Matlab eller tilsvarende programvare?
Ble litt mye jobb å skrive et program selv, men etter litt lynkjapp googling fant jeg litt kode. Det ga meg følgende bilde (klikk på for større versjon):

Her er koden:

Her er koden:
Code: Select all
function [x, y, z] = torus (r, n, a)
% TORUS Generate a torus.
% torus (r, n, a) generates a plot of a
% torus with central radius a and
% lateral radius r.
% n controls the number of facets
% on the surface.
% These input variables are optional
% with defaults r = 0.5, n = 30, a = 1.
%
% [x, y, z] = torus(r, n, a) generates
% three (n + 1)-by-(n + 1) matrices so
% that surf (x, y, z) will produce the
% torus.
%
% See also SPHERE, CYLINDER
%
% MATLAB Primer, 6th Edition
% Kermit Sigmon and Timothy A. Davis
% Section 11.5, page 65.
if nargin < 3, a = 1 ; end
if nargin < 2, n = 30 ; end
if nargin < 1, r = 0.5 ; end
theta = pi * (0:2:2*n)/n ;
phi = 2*pi* (0:2:n)'/n ;
xx = (a + r*cos(phi)) * cos(theta) ;
yy = (a + r*cos(phi)) * sin(theta) ;
zz = r * sin(phi) * ones(size(theta)) ;
if nargout == 0
surf (xx, yy, zz) ;
ar = (a + r)/sqrt(2) ;
axis([-ar, ar, -ar, ar, -ar, ar]) ;
else
x = xx ;
y = yy ;
z = zz ;
end
An ant on the move does more than a dozing ox.
Lao Tzu
Lao Tzu
Nice!
Tusen takk. Nå er det kanskje håp om at jeg kan få det til.
Er det bildet generert av funksjonen i første innlegg, eller en du fant på nett?
Gleder meg til å se om effektivt 2-3 dager av mitt liv er vært bortkastet, hehe.
EDIT: Så nå at det var den samme funksjonen, bare faktorisert penere
Tusen takk! Nå ble jeg glad.
Tusen takk. Nå er det kanskje håp om at jeg kan få det til.
Er det bildet generert av funksjonen i første innlegg, eller en du fant på nett?
Gleder meg til å se om effektivt 2-3 dager av mitt liv er vært bortkastet, hehe.
EDIT: Så nå at det var den samme funksjonen, bare faktorisert penere
