Trenger hjelp med 3d-plotting

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk på høyskolenivå. Alle som har kunnskapen er velkommen med et svar. Men, ikke forvent at admin i matematikk.net er spesielt aktive her.

Moderators: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

Post Reply
edahl
Cantor
Cantor
Posts: 142
Joined: 23/12-2008 19:32

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.
Markonan
Euclid
Euclid
Posts: 2136
Joined: 24/11-2006 19:26
Location: Oslo

Vet ikke om noen gratisprogrammer for å plotte noe sånt. Har du tilgang på Matlab eller tilsvarende programvare?
An ant on the move does more than a dozing ox.
Lao Tzu
edahl
Cantor
Cantor
Posts: 142
Joined: 23/12-2008 19:32

Markonan wrote:Vet ikke om noen gratisprogrammer for å plotte noe sånt. Har du tilgang på Matlab eller tilsvarende programvare?
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
Euclid
Euclid
Posts: 2136
Joined: 24/11-2006 19:26
Location: Oslo

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):
Image

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
edahl
Cantor
Cantor
Posts: 142
Joined: 23/12-2008 19:32

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 :oops: Tusen takk! Nå ble jeg glad.
Post Reply