Vai al contenuto
johnwhile

Funzioni Parametri Locali Globali Importare Da File

Recommended Posts

Salve, scrivo questo messaggio perchè purtroppo stò impazzendo con MaxScript, ho iniziato da pocho e sicuramente mi sarà sfuggito qualcosa, perciò mi rivolgo a chi lo usa da un po' e magari ha avuto all'inizio i miei stessi problemi:

Allora io stò cercando di importare dei dati da un file binario per creare oggetti in 3dstudio max, il problema è che queste funzini mi fanno impazzire, a volte funziona il programma e a volte mi restituisce undefined dappertutto, mettendo dei controllo proprio per evitare questo sembra non servono a niente:

Vi posto quello che stò cercando di fare, magari può essere utile anche come esercizio.

PROBLEMA: al primo avvio facendo su run comincia a darmi undefined già dalla prima funzione che si attiva cliccando su open.

Allora provo ad aprirlo e fare Ctrl+E e parte ma dopo che carico il file và di nuovo in crash

Ritento con Ctrl+E e non và in crach ma non serve a niente perchè del Listener se digito esempio dataTable1 mi restituisce undefined, ma come ?? il programma avrebbe dovuto darmi un message box d'errore :blink2: ???

Dopo vari tentativi finalmente mi restituisce la varibile dal listener.

Se cambio qualcosa torno di nuovo dall'inizio :wacko: .

E' colpa del mio maxscript che mi prende in giro oppure le funzioni hanno deciso di funzionare quando vogliono loro :blink2: ???

inoltre ho dichiarato all'interno delle funzioni solo variabili locali per evitare "interferenze" con altre funzioni

Sapete chi mi può aiutare ? questo convertitore è richiesto da molti utenti in twcenter.net, non vorrei deludere le spettative bloccandomi su queste cosucce...

WCI.zip

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ma devi creare una utility o devi creare uno script che una volta eseguito ti crea la dialog con le varie opzioni?

Se è la seconda allora al posto di 'utility' devi scrivere 'rollout'.

La serie di errori che ti dà succedono perchè tu richiami una funzione quando ancora non l'hai definita.

Tieni presente che in maxscript non è necessario dichiarare in precedenza alcuna variabile.

Se tu provi ad eseguire questo codice:


fn provaVariabili val=(

	a+=val

	print a

)


provaVariabili 10

a=2
La prima volta che lo esegui nel listener ti comparirà:
provaVariabili()

-- Error occurred in provaVariabili(); filename: C:\Documents and Settings\Michele\Desktop\WCI\; position: 33; line: 2

--  Frame:

--   a: undefined

--   val: 10

-- No ""+"" function for undefined

2
tutte le parti con -- davanti sono un messaggio di errore che ti avvisa che stai provando a fare a+=10 senza però aver dato un valore ad a in precedenza Poi dopo hai un '2', questo è il risultato dell'operazione 'a=2'; vedendo questo comando maxscript crea una variabile globale che si chiama 'a' di valore 2. se ora esegui lo stesso codice vedrai che non ti darà più errore, il risultato sarà:
provaVariabili()

12

12

2
E d'ora in avanti sarà sempre così a meno che non riavvi max. La stessa cosa ti succede quando per la prima volta esegui il tuo script e premi il pulsante open: il codice che hai scritto nella callback del bottone open è 'OpenWorldCollision()', ma questa funzione è definita più sotto e quindi maxscript quando arriva a leggere in quel punto del codice ancora non sa cosa sia e quindi dà errore. In ogni modo però dopo l'errore continua a leggere e quindi crea la funzione globale 'OpenWorldCollision' e quindi la seconda volta che esegui lo script non ti dà più quell'errore. Per risolvere le possibilità son due: 1- definisci la funzione prima del codice dell'interfaccia 2- all'inizio del tuo codice aggiungi una riga dove definisci il nome della funzione che definirai successivamente, in questo modo:
OpenWorldCollision=undefined
Così quando maxscript fa il controllo della sintassi del tuo codice non darà errore e il tutto verrà eseguito senza problemi(e devi farlo per tutte le funzioni che richiami ma che sono definite successivamente). Un modo per non avere questi problemi è quello di racchiudere tutto il tuo script tra due parentesi'()'in questo modo tutto quello che definirai sarà local e non avrai differenze tra una esecuzione e quella successiva.(tutto quello che definisci all'interno di parentesi tonde rimane all'interno delle tonde, l'attributo 'local' è implicito ma si può tranquillamente usare per più chiarezza. All'interno delle tonde è comunque possibile usare l'attributo 'global') Riguardo alla questione 'dataTable1 ' io all'interno del codice l'ho cercata come parola ma ne ho trovata una sola occorrenza, qui:
	on btn3 pressed do (

	data = CreateBoundingBox datatable1 datatable2

	print data

	)

non ho trovato dove è definita ed è normale che lo script ti dia errore quando poi in 'CreateBoundingBox ' scrivi: 'return T1.ntable'

In quanto T1 è undefined e quindi non ha una proprietà che si chiama 'ntable'.

forse devi sostituire 'datatable1' con 'table1data' ma non ho esaminato lo script al punto da poterlo dire con certezza(se ho ragione idem per datatable2 ).

occhio anche alla riga 'print data', anche qui ti riferisci ad una variabile che non è definita.

Mi sono dilungato un pò troppo... Non so se mi son spiegato benissimo, comunque se hai bisogno di altri chiarimenti son qua!!!

ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie infinite, mi hai salvato. :Clap03:

Questa cosa del dichiarare prima proprio non la sapevo, adesso si spiega perchè lo script funzionava dopo che nel listenere verificavo tutte le variabile e quindi dandomi undefined implicitamente me la creava e quindi all'avvio sucessivo funzionava !!!

Adesso provo a correggerlo.

Comunque mi sembra di aver letto che per defoult le variabili erano globali nelle funzioni.

Questa cosa del definire prima sia la funzione sia le variabili avrebbero dovuto spiegarla meglio nell'help, sembra una cavolata ma fà sbattere la testa se non lo viene a conoscenza !!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Allora vediamo se ho capito, adesso funziona (io quel datatable1 invece di table1data mica mi ero accorto :rolleyes:) ho fatto vari spostamenti seguendo la tue spiegazione, infatti ho spostato anche alcuni cambiamenti di proprietà dei bottoni messi all'interno di funzioni quindi dichiarati prima del rollout.

Secondo te è corretto l'utilizzazione di global in quel blocchetto iniziale che ho messo o è superfluo utilizzare global ?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

per il discorso delle variabili all'interno delle funzioni ti ripropongo una variante del mio esempio di prima:

fn provaVariabili val=(

        a=0

        a+=val

        print a

)


provaVariabili 10

print a

ora questo codice non dà più errore come prima, la prima volta restituisce 10(il risultato di 'a+10', visto che a è inizializzata prima a 0 )e undefined(che è il risultato della riga 'print a' quella fuori dalla funzione).

Questo perchè a non esiste al di fuori dalla funzione perchè implicitamente è stato creato come local.

Se però ora esegui di nuovo lo script vedrai che non otterrai più undefined.

Questo perchè la prima volta nel momento in cui viene eseguita l'ultima riga (appunto 'print a') maxscript crea la variabile globale a di valore undefined.

la seconda volta quando richiami la funzione la riga 'a=0' non crea più una variabile locale di nome 'a', ma assegna 0 alla variabile globale 'a' creata con la precedente esecuzione.

un modo per ovviare a questo è creare all'inizio della funzione la variabile locale a forzando la cosa appunto con 'local a=0'

per questo ti ho consigliato di racchiudere tutto il tuo codice tra tonde(questo in verità è un consiglio di Bobo)

Se non vuoi farlo devi stare molto attento a quello che scrivi.

Altra cosa: le variabili globali andrebbero usate con parsimonia e se proprio devi usarle cerca di chiamarle con nomi univoci, sopratutto se lo script deve essere dato ad altri.

Perchè altrimenti rischi che il tuo script vada in conflitto con altri.

Io ad esempio tutte le mie variabili globali disolito le precedo col nome del mio nick(nel caso penso di condividere lo script) in questo modo sono più tranquillo

per altri chiarimenti son qua.

ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Ciao, purtroppo ho ancora bisogno di aiuto, questa volta un pò più complesso:

Ho vari problemi con la concatenazione di dati, a volte devo dichiarare le variabili all'interno degli stessi cicli altrimenti non mi crea la serie di dati che voglio:

Allora il mio problema si trova nella funzione: function ReadTable3, non mi crea la matrice rtmatrix e irtmatrix come voglio io. cioè i dati li legge nella sequenza giusta ma non mi crea l'array multiplo come voglio io.

Memorizzo i dati ricavati dalla funzione in una struttura globale chiamata table3data da cui verifico alla fine del programma con il Listener la correttezza dei dati.

La struttura nel dato la vedi verso l'inizio, inoltre ti ho messo sia il file di testo completo sia un README dove spiego come devo archiviare i dati (solo il primo ciclo ovviamente).

Esempio se digito:

table3data.ngroup >> 113 corretto

table3data.rtmatrix.count >> 113 corretto

table3data.irtmatrix.count >> 113 corretto

table3data.bsphere.count >> 113 corretto

ma table3data.rtmatrix[1] >> non è una matrice 4X4 ma una sequenza lunghissima di array

quindi quello che voglio fare è archiviare i dati in questo modo:

table3data.rtmatrix[1] >> matrice 4x4 del primo ciclo

table3data.irtmatrix[1] >> matrice inversa del primo ciclo

ne approfitto per dire che quella sarebbe la famosa matrice 3X4 che si ottiene anche con la funzione transform di 3dstudio max, in effetti l'ultima riga è sempre 0 0 0 1, si potrebbe anche evitare di memorizzarla ma non importa

ho dovuto dichiarare local MatrixRow = #(1.0,2.0,3.0,4.0) all'interno del ciclo, se lo facevo all'inizio della funzione mi creava una rtmatrix tutte uguali.

Sapreste aiutarmi ? magari a spiegarmi più o meno come posso migliorare la funzione perchè come avete notato è un casino di cicli append e altre cose.

WCI.zip


Modificato da johnwhile

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

anzi no, qui mi dice solo al primo tentativo che la funzione CreateParentMesh non può essere undefined, io ho nominato sia la variabile all'interno per evitare ciò sia un commento per indicare dove nasce l'errore sempre al primo avvio.

Purtroppo non riesco proprio a capirlo :wacko:

WCI.zip

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

il fatto che ti dia errore alla prima esecuzione e poi no è sempre indice del problema che ti ho spiegato prima.

La funzione è definita dopo che tu la chiami, devi dichiararla prima undefined:

CreateMesh=undefined
tra l'altro non ho trovato nel codice dove tu richiami 'CreateParentMesh', occhio anche per questa a dove la richiami, se è prima della sua definizione allora devi fare sempre lo stesso "giochino" di 'CreateMesh'. io per poter provare 'CreateParentMesh' ho aggiunto la sua chiamata alla fine di 'CreateBbox' e quindi ho dovuto modificare il tuo codice anche all'inizio aggiungendo le due dichiarazioni ad undefined:
CreateMesh =undefined

CreateParentMesh=undefined

ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

il fatto che ti dia errore alla prima esecuzione e poi no è sempre indice del problema che ti ho spiegato prima.

La funzione è definita dopo che tu la chiami, devi dichiararla prima undefined:

CreateMesh=undefined
tra l'altro non ho trovato nel codice dove tu richiami 'CreateParentMesh', occhio anche per questa a dove la richiami, se è prima della sua definizione allora devi fare sempre lo stesso "giochino" di 'CreateMesh'. io per poter provare 'CreateParentMesh' ho aggiunto la sua chiamata alla fine di 'CreateBbox' e quindi ho dovuto modificare il tuo codice anche all'inizio aggiungendo le due dichiarazioni ad undefined:
CreateMesh =undefined

CreateParentMesh=undefined

ciao

ah che stupido, è vero la function CreateParentMesh = lo messa prima di function CreateMesh oggetto nome tipo=... grazie.

Il fatto è che ragiono ancora con Python o C e a volte non ci faccio caso a dove metto le funzioni ^_^ !!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ho visto che ti interessi di computer grafica e game, mi sapresti aiutare in una questione che si può definire di "teoria" ?

Sono incappato in un problema assai tosto, il gioco e 3dstudio utilizzano due sistemi di coordinate differenti, facile da convertire nella funzione che ho chiamato point3g ma purtroppo la matrice di rotazione mi stà facendo impazzire.

Sò come si calcola ma non riesco a trovare una conversione giusta perchè il cambio di sistema mi incasina moltissimo.

Dopo non ti disturbo più, ma tu hai qualche suggerimento, idea o qualcosa del genere ?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

per cambiare sistema di riferimento delle coordinate di solito io mi preparo una matrice che rappresenta il mio sistema di riferimento che voglio usare e poi moltiplico qualsiasi valore (che voglio visualizzare tramite questo sistema di riferimento) per la mia matrice.

prova ad esempio questo codice e guarda il risultato nel listener:

prova=[1.0,2.0,3.0]


theMat=matrix3 1


scale theMat [-1,1,1] true


rotatex theMat 90


prova*theMat

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie, io nel frattempo ho trovato per caso una funzione in max,xformMat, che mi cambia sistema di riferimento utilizzando una matrice (che ho chiamato N)che rappresenta il sistema di coordinate del gioco, in effetti se moltiplico un vettore di 3dstudio per questa matrice lo ottengo nella stess posizione ma con sistema diverso (ho fatto su un foglio per capirci).

Purtroppo ci sono certi oggetti orientati in modo sbagliato mentre molti altri in maniera correta. Sembra che certe operazioni come il mirror non vengano convertite correttamente.

Secondo tè quelli del gioco hanno inserito anche l'inversa della matrice proprio per questi casi ? ma secondo me non ha senso, se la normale non si converte bene neanche l'inversa...

Io comunque ti posto l'ultima versione, per vedere l'effetto prima apri il file, poi fai su create parent poi su child e vedrai il mmio problema, ci sono molti oggetti orientati non correttamente (mi sembra tutti senza un MirrorXY).

Ho provato a creare la scena senza convertire le coordinate perchè così in teoria dovrebbe crearmi la scena perfetta ma ruotata chissà come, solo che fà peggio... Secondo mè è possibile che non sia io a sbagliare ma forse sono proprio i file a essere non corretti, infatti quegli oggetti servono alle collisioni, non si vedono nel gioco ma si vedono gli effetti (tipo esplosioni)

WCI_v@.zip

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

L'unico modo per vedere se quei file sono non corretti è cercarne altri e provare.

Per il discorso delle normali invertite a me è successo che quando creavo geometrie facendo il mirror della mesh(a livello di sub oggetto vertici e non a livello oggetto) dopo mi ritrovavo con le normali invertite, analizzando la cosa ho visto che con un numero dispari di operazioni mirror era necessario fare il flip delle facce in modo da invertire le normali.

Un modo per ovviare al problema di dover fare il flip è di creare i tuoi oggetti senza convertirli nel sistema di max ma poi muovere l'oggetto creato per trasformarlo nel sistema di coordinate di max.

Per il resto in sti giorni non ho molto tempo per guardare a fondo il codice per controllare se ci sono degli errori nell'importazione, nel weekend avrò sicuramente più tempo per guardarci.

ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Nessun problema, anchio sono molto impegnato, faccio qualcosina nel tempo libero.

Comunque grazie mille per la disponibilità, spero di fare qualcosa che interessi pure a te! :w00t:

Allora adesso provo a fare così: leggo tutti i dati senza convertirli.

Quando creo gli oggetti prima li "costruisco" con le coordinate dei vertici del gioco poi modifico la trasformata esempio con mesh.transform = mesh.transform * theMat.

Per gli oggetti traslati e ruotati stessa cosa, creo l'oggetto originale, poi calcolo la sua matrice esempio rtmatrix=rtmatrix*theMat e la applico ala trasformata conme prima con mesh.transform = rtmatrix.

A dir la verità qualcosina del genere avevo provato ma con risultati peggiori... farò prima una copia dello script e vediamo se riesco a rifarlo meglio con queste nuove conoscenze, infatti lo script rispecchia più che altro la mia fase di apprendimento, inizia male e confusionato e poi si migliora pian piano :rolleyes:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

anzi allego anche il convertitore senza conversioni di sistema di coordinate che dimostra che c'è qualcosa che non và nel file originale, forse dovrò prendere file del gioco dopo l'ultima patch perchè mi hanno detto (chi analizza i file) che hanno cambiato qualcosina nel sistema di archiviazione dati, forse si sono accorti di qualche sbaglio... mah, secondo me mettere sia la matrice sia la sua inversa non ha senso, se una è ottenibile dall'altra è uno spreco di dati... forse nasconde qualcosa che io non sò perchè io ero rimasto al fatto che mi rotazioni-sclatura ecc... ci sia solo una di matrice (ps:che poi l'inversa precisa non è, ha i segni diciamo del row4 ,per intenderci, di segno opposto)

WCI_vBeta.rar

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ecco, ho trovato una differenza che si ripete per tutti gli oggetti "sbagliati" e ho dato colore bianco a questi oggetti, infatti una volta creati i "parents" e "children" si vede che sono tutti oggetti che devono avere una rotazione 180 Z (nel sistema di max).

Però non ne capisco il significato matematico.

Da quello che sò, una marice per l'inversa dovrebbe dare sempre identità... quindi non è l'inversa ma qualcosaltro...

WorldCollisionImport.v0.1.zip

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Allora dopo vari tentativi, anche i più disperati, non sono giuto ad una conclusione definitiva.

Il mio problema stà tutto nella conversione di una matrice di rotazione creata per coordinate della Direct3D (gioco) al sistema di max.

Ho provato questo sistema:http://www.devmaster.net/forums/archive/index.php/t-6576.html

ma alcuni oggetti sono sbagliati.

Ho provato con il sistema messo in questa versione dello script, cioè ho estratto le rotazioni e traslazioni, le ho convertite e rimesse in una matrice3x4 come le vuole max, ma niente, gli oggetti sbagliati di prima li corregge ma ne sbaglia altri (hanno tutti bisogno di un +180Z e mirrorZ)

Non capisco proprio il perchè di tanto casino.

Ho messo anche un'immagine con le coordinate di max rispetto a quelle della Direct3D ma PERCHE' NON FUNZIONA ????

Convertitore.rar


Modificato da johnwhile

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ciao!!

Inanzitutto scusami se non ti ho risposto prima ma la settimana scorsa sono stato anche ammalato e mi sono proprio dimenticato...

ma il sistema di coordinate dal quale importi è quello che hai chiamato milkshape o quello chiamato the game?

Un'altra cosa, da dove prendi i file con i dati da importare?

Magari guardare tra le specifiche del file il significato di quell'altra matrice potrebbe essere chiarificatore.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ciao!!

Inanzitutto scusami se non ti ho risposto prima ma la settimana scorsa sono stato anche ammalato e mi sono proprio dimenticato...

ma il sistema di coordinate dal quale importi è quello che hai chiamato milkshape o quello chiamato the game?

Un'altra cosa, da dove prendi i file con i dati da importare?

Magari guardare tra le specifiche del file il significato di quell'altra matrice potrebbe essere chiarificatore.

cos intendi per specifiche del file ? essendo mod questo file worldcollision è stato decifrato da noi per tentativi e test, infatti altri utenti hanno fatto un convertitore da worldcollision a testo e viceversa.

Io ho detto loro che quelle due matrici erano matrici di rotazione, la seconda è una pseudo inversa (nel senso che a volte è l'inversa con row4 per intenderci messa a -1).

La conversione è dà Game a 3DStudio, le coordinate del Game sono le stesse utilizzate dalla Direct3D.

Quindi io sò con certezza che sono matrici di rotazione, so ancora con certezza che si utilizzano come dal mio script e sò con certezza che la costruzione nel complesso ha quella forma e orientazione, solo che per alcuni oggetti le orientazioni sono sballate, cioè hanno un +180°Z e mirror Z in più.

Dal mio script fai open, carichi il file con estensione worldcollision, e poi clicchi su "Crea Bounding Box", "Crea Parent" & "Crea child".

Ho messo anche il file testo per chiarezza di comprensione:

La table1 e 2 servono a costruire i BoundingBox

I CentralEntries sono gli oggetti "parent" che vengono creati tutti al centro della scena, non hanno un posto in realtà.

La table3 definisce I child cioè ogni child è la copia di un parent con orientazione e posizione univoca definita appunto da questa matrice (ce ne sarebbero due però)

In definitiva più child sono un parent con orientazione propria (ma ovviamente un parent viene utilizzato da più child).

Quindi il mio problema stà proprio nella funzione "matrix3g" utilizzata per convertirmi la matrice mentre "point3g" converte i soli punti ma in questa il problema non esiste.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Per spiegarti meglio ti faccio un esempio:

Prendo proprio il primo child:

# ----------------------------------------------

#                 Table 3:                      

# ----------------------------------------------

  0  113

  32    0   -1.0000000000   +0.0000000000   +0.0000001510  +13.0827102661      -1.0000000000   +0.0000000000   -0.0000001510  +13.0827102661 

            +0.0000000000   +1.0000000000   +0.0000000000   +1.0472527742      +0.0000000000   +1.0000000000   +0.0000000000   -1.0472527742 

            -0.0000001510   +0.0000000000   -1.0000000000   +1.8026899099      +0.0000001510   +0.0000000000   -1.0000000000   +1.8026878834 

            +0.0000000000   +0.0000000000   +0.0000000000   +1.0000000000      +0.0000000000   +0.0000000000   +0.0000000000   +1.0000000000     

+13.1314935684   +1.0361373425   +1.8576663733   +1.0726175308 

32 si riferisce al parent num 32 che contiene le infoormazioni dell'oggetto

0 si riferisce al primo child (ovviamente sono in sequenza)

poi trovi la prima matrice di rototraslazione, la seconda pseudo inversa, e tre numeri finali che sono la BoundingSphere ma è trascurabile.

Fin tanto che la prima matrice è identità allora non c'è problema, se le rotazioni sono a zero in Direct3D sono a zero anche in Max, mentre la 4 colonna sono gli spostamenti del centro che si convertono facilmente con "point3g"

il problama sono quando gli oggetti sono ruotati sulle coordinate X e Z del gioco ( -X e Y di Max) perchè l'Y del gioco è testata; e specialmente con operazioni di Mirror che incasina tutto.

La primissima cosa che feci era proprio prendere questa matrice e moltiplicarla per una di conversione =

[-1,0,0][0,0,-1][0,1,0][0,0,0] ma alcuni oggetti avevano una rotazione di 180 Z e Mirror Z in più

(la si ricava tra l'altro proprio con il tuo sistema).

Poi ho fatto manualmente uno schemino:

Se [x,y,z]gioco = [-x,-z,y]3ds allora anche le rotazioni (sempre con la regola della mano destra) sono [-R.x,-R.z,R.y]; così si corregge alcune cose ma altri oggetti sono sbagliati :crying: !!

ecco un'immagine fatta dallo script con il pimo metodo e la corispondente immagine dell'edificio a cui dovrebbe combaciare le suddette trasformazioni:

test1is.th.jpg

medieval220100324205350.jpg


Modificato da johnwhile

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Spero di aver spiegato bene il problema, ho visto che ti interessi di grafica-giochi quindi magari può essere una conoscenza utile; anche perchè io stò già facendo la seconda parte riguardante l'esportazione, ma senza aver completato l'importazione e aver capito come si utilizzano queste matrici non serve a niente. ^_^

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Chiarisco un attimo. Ho verificato che è sempre così:

Se prendo la prima matrice composta come

[M][v]

dove v è lo spostamento o l'equivalente row4 in max e M è la matrice 3x3, allora la seconda matrice è sempre costruita così:

[M-1] [M-1* v * (-1)]

dove (-1) intendo [-1,0,0][0,-1,0][0,0,-1]


Modificato da johnwhile

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora


  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×