|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Città: Bruxelles
Messaggi: 3888
|
aiuto con programma in fortran
questo è quello che mi è stato inviato poco fa dato che stavo impazzendo a fare un cambio di sistema. Questo codice "dovrebbe" consentire di cambiare sistema di riferimento solamente dando le coordinate di 3 punti.
Questo è quello che mi è stato scritto: Nella subroutine ci sono due funzioni che devi utilizzare: la prima si chiama "rotcal" ed è relativa al calcolo della matrice di rotazione per il passaggio al PAN. R1 e r2 corrispondono ad A1 (preauricolare sinistro) e A2 (preauricolare destro), rispettivamente. R3 è il Nasion. la seconda si chiama "local" ed è relativa all'applicazione della suddetta matrice di rotazione c-----------------------------------------------/ rotcal c c calculates rotation matrix for local coordinate system c subroutine RotCal (r1, r2, r3, A, iS) c c where r1,r2,r3 = points which define plane to use c as base for local coordinate system. c r2 is the origin. c Y = (r1-r2) c X = normal to plane r1,r2,r3 c Y = line perpendicular to Z in plane r1,r2,r3 c c A = rotation matrix returned c iS = -1 => left handed system c = 1 => right handed system c c DIMENSION r1 (3), r2 (3), r3 (3) DIMENSION vI (3), vJ (3), vK (3) DIMENSION A (3,3) c s = 0 do iC= 1, 3 A (iC,2) = r1 (iC) - r2 (iC) s = s + (A (iC,2)**2) end do s = sqrt (s) c do iC = 1, 3 A (iC,2) = A (iC,2) / s end do c DX2 = r2(1)-r1(1) DX3 = r3(1)-r1(1) DY2 = r2(2)-r1(2) DY3 = r3(2)-r1(2) DZ2 = r2(3)-r1(3) DZ3 = r3(3)-r1(3) r = -(DY2*DZ3-DZ2*DY3) * iS s = -(DZ2*DX3-DX2*DZ3) * iS t = -(DX2*DY3-DY2*DX3) * iS sU = sqrt (r*r + s*s + t*t) A (1,3) = r / sU A (2,3) = s / sU A (3,3) = t / sU c do iC = 1, 3 vI (iC) = A (iC,3) vK (iC) = A (iC,2) end do c call PV (vK, vI, vJ) c do iC = 1, 3 A (iC,1) = vJ (iC) end do c return end c c c------------------------------------------------/ local c c calculates coordinates of point in local coordinates c subroutine Local (A, r2, rGlo, rLoc) c c where A = rotation matrix (calculated by RotCal) c r2 = origin of local coordinates c rGlo = point in global coordinates c rLoc = returned position in local coordinates c DIMENSION A (3,3) DIMENSION r2 (3), rGlo (3), rLoc (3) DIMENSION D (3) c do i = 1, 3 D (i) = rGlo (i) - r2 (i) end do c do i = 1, 3 rLoc (i) = 0. do j = 1, 3 rLoc(i) = rLoc (i) + (A (j,i) * D (j)) end do end do c return end Ora io non avevo nemmeno sentito mai prima di questo linguaggio...come funziona? è come il c che si deve compilare? qualcuno mi può spiegare come fare ad utiliazzare il programma? non mi interessa comprenderlo ma usarlo ![]() spero che qualcuno sappia aiutarmi!
__________________
venice 3000@300x9 full air 1.5V/2x1GB Gskill ZX/6800gt PoV/MSI Neo2/zalmann 7000cu/audigy2/creative i-trigue5600 VENDO SODIMM DDR2 256MB NUOVA - VENDO SCHEDA MADRESOCKET A SOLTEK CHIPSET KT133 - PVT ! |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Dec 2001
Messaggi: 11
|
ti serve un compilatore fortran, se usi linux c'è tipo l'ifort della intel che per scopi non commerciali è gratuita, compili il tuo programma ad esempio prova.f con "ifort -o prova.exe prova.f" quindi lanci l'eseguibile "./prova.exe"
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:26.