π
<-

[W.I.P] Make3D pour TI-Nspire

Pour TI-Nspire OS 3.0 ou ultérieur.

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 25 May 2010, 23:14

Bon, voilà quelques avancées :

- select.point(id)
- m.axes() - transformé en fonction pour les biens de la communauté :p
- t.select(liste) - crée une liste d'id pour les points sélectionnés (fonction)
- t.selected - liste qui permet de sauvegarder les points sélectionnés.
- t.xspl_s / t.yspl_s les deux listes qui se chargent de surligner les points.


et tout ça est dynamique en temps réel ! o/

Image
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 26 May 2010, 21:38

Et ça continue ...

Nouveau groupe "o." correspond à "outils"
Je rappelle que "t." est déjà utilisé par "tableur"

donc :
- o.distance(p1,p2) - donne la distance entre deux points. On peut se servir de Listes pour aller plus vite
- o.bar(mat) - Calcule le barycentre pondéré d'une matrice formatée en 2 lignes x colonnes où x est le nombre de points. ex : o.bar([[1,2][1,1]]) calcule l'isobarycentre du segment délimité par les points de numéro 1 et 2
Image

C'est pas bien compliqué mais ça peut toujours servir...

J'étais sinon en train de réfléchir sur un algo permettant de tracer une face entre 4 points dans l'espace sans que la face soit concave.

Je rappelle que les faces sont "codées" par des séquences où l'ordre est important car définit l'unique vecteur normal à la face qui permet de définir le sens de projection.
Un exemple : [A B C D]
L'algo qui trace la face, ne fait qu'en fait tracer les lignes qui la composent. Donc il va tracer une ligne entre les points A et B, puis B et C puis C et D, et enfin D et A pour fermer le quadrilatère.
Avec un produit vectoriel, on définit le sens de la face pour le mode solid en suivant cette ordre

J'ai donc tout d'abord pensé à un algo de calcul de distances.
Le principe était le suivant :
On a 4 points dans l'espace, A, B, C, D.
Image

Si on part du point A, on va projeter un rayon sur B, puis sur C, puis sur D et on va récupérer la plus courte distance. La plus courte distance définit le prochain point à attendre.
La séquence commencera donc par [AB]
Image

Ensuite, on "oublie" A et on recommence la projection à partir de B. Le point le plus proche est C... et ainsi de suite jusqu'à former la séquence complète.
A vue de nez, ça parait parfait comme algo. Sauf que, voilà, il y a quelques pépins.

Posons l'espace suivant composé toujours des quatre points mais avec des positions différentes :
Image

Voyez-vous le problème ?

Allez, je vous aide, en bleu la phase "correcte", en rouge "l'erreur" provoquée par l'algo, et en vert ce qui devrait se passer :
Image

Voilà, c'est ma torture mentale depuis 3 heures...

:#ouin#:
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby JayTe » 27 May 2010, 06:59

Tu ne pourrais pas te baser sur les angles plutôt?

A priori si tu cherches à tracer une face, c'est que A,B,C et D sont coplanaires. Ca simplifie un peu le calcul des angles, et donc à chaque fois, au lieu de chercher le point le plus proche du point précédant, tu cherches le point qui forme l'angle le plus grand (en valeur absolue) avec le segment déjà tracé. (Par contre pour le premier point tu ne pourras pas faire d'angle... à voir)

Après je ne sais pas trop comment c'est implémentable, mais tu pourrais essayer :):

Ou alors peut-être avec des produits scalaires...
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 27 May 2010, 07:09

JayTe wrote:Tu ne pourrais pas te baser sur les angles plutôt?

A priori si tu cherches à tracer une face, c'est que A,B,C et D sont coplanaires. Ca simplifie un peu le calcul des angles, et donc à chaque fois, au lieu de chercher le point le plus proche du point précédant, tu cherches le point qui forme l'angle le plus grand (en valeur absolue) avec le segment déjà tracé. (Par contre pour le premier point tu ne pourras pas faire d'angle... à voir)


Ah ! révélation ! merci !

Oui, un ptit calcul d'angles en 3D c''est pas plus compliqué qu'en 2D :#top#:

edit : D'ailleurs, inutile que les points soient coplanaires. Je ne cherche pas à tracer un plan, mais bien une face. Même si ça parait inutile en maths, avec Blender c'est bien utile d'avoir une face sur des points non-coplanaires

edit2: Bon effectivement j'ai réfléchi quelques minutes sur comment estimer le premier rayon formé par les deux premiers points, et c'est pas facile.
A priori, pour le point de départ je me baserais sur le premier point de la liste de sélection.
Image

Image
On pourrait toujours calculer tous les angles à partir du point de départ. Pour une face à 4 points (maximum), il y a 3 angles à calculer... pas beaucoup. Ensuite, on prendrait la plus courte distance entre ces deux points afin de commencer. Toujours est-il que cette deuxième phase n'est pas très importante pour l'instant car il serait intéressant de garder le bon sens des normales directives (en maths il peut exister plusieurs normales à un plan, là je parle en terme de face, et je ne considère qu'une normale dont le signe est défini par la séquence de la face).
Image
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 27 May 2010, 09:12

Bon, en attendant, j'ai crée une fonction o.corner(A,B,C) (je pouvais pas l'appeler "o.angle" à cause de la fonction angle() build-in) qui calcule l'angle entre ces 3 points (le sommet est B). On peut également mettre des listes en argument comme dans presque tous mes programmes où je prends soin de rendre ce dernier extensible :D:

Image

Par contre...je pensais pouvoir rapidement fixer le fait de trouver le point ayant un angle maximum avec le précédent segment... sauf que... quand on utilise max() ça ne fait que renvoyer la valeur maximale.

Je crois qu'on peut faire max() avec une matrice, je suis en train de regarder.

edit : non, ça marchera pas avec max() et une matrice, ça fait quelque chose d'utile mais de pas du tout prévu...
Bon, bah ya plus qu'à recréer une fonction max_id() :#langue#:
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 27 May 2010, 16:31

Ayé, ça marche :%):

Image

Fonctions crées :
- c.face(liste) - exclude(liste,num ou liste) - min_id(liste) - max_id(liste) - o.corner(p1,p2,p3) avec p1,p2,p3 entièrement des listes de même dimension, ou entièrement des nombres entiers. L'angle sera calculé pour le sommet p2


Vala vala, 33 lignes seulement pour c.face() :D:
et j'en ai vu passé des bugs incompréhensibles (le problème du récursif et des focntions c'est qu'il est difficile de debugguer précisément où ça plante, on a pas de "Disp", seulement des Return), du genre : c.face({1,5,6,4}) - [1 6 6 6 6 6 6] (la Nspire incarne le double diable LOL)
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby JayTe » 27 May 2010, 17:10

Bravo ! #clapclapclap# :D:

Par contre je vois pas pourquoi tu ne peux pas utiliser Disp dans les fonctions, chez moi ça marche... :|:
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 27 May 2010, 17:13

JayTe wrote:Par contre je vois pas pourquoi tu ne peux pas utiliser Disp dans les fonctions, chez moi ça marche... :|:

:#sick#:



quel con moi...


Je sais pas, j'étais persuadé que ça ne fonctionnerait pas :#ouin#:

Bon, bah, c'est bon à savoir, merci :#top#:
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby Levak » 27 May 2010, 18:46

Mic wrote:C'est puissant ce que tu fais Levak.

Merci Ô grand Kong :#zen#:
______________________________________________________

zinon baz.... zai renommé pleinz de fonctionz afin de réarranger la structure globale du classeur :#gol#:

Je me sert des groupes (ou super variables) comme raccourcis claviers. Tout ce qui sera utile pour l'utilisateur sera disponible dans des groupe qui affichent automatiquement des popups : Et oui, quand on tape dans une partie calcul "toto." avec un point, et qu'il y a des programmes commençant par "toto." ou plutôt appartenant au groupe "toto", une popup s'affiche donnant un accès rapide à tous les programmes appartenant à ce groupe. Perso je suis fan de ce ptit truc.

Voici la nouvelle nomenclature :
a : add : 1.face 2.ligne 3.point : permettra de rajouter des points/lignes/faces à l'objet actif.
b :
c :
d :
e : erase : 1. face 2. ligne 3. point
f :
g : grab : 1. global 2. local : je compte permettre le déplacement local des objets, car le déplacement global est corrompu avec le déplacement écran en fait. C'est pas nous qui tournons autour de l'objet, c'est lui qui tourne sur lui même, c'est donc un déplacement suivant le repère écran
h : help : 1. raccourcis 2. aide 3. credits
i :
j :
k :
l :
m : 1. make3D
n : normals : 1. flip 2. recalculate
o : outils : 1. bar 2. corner 3. distance
p :
q :
r : rotate : 1. global 2. local
s : scale : 1. global 2. local
t : table : toutes les variables et fonctions relative au tableur qui s'occupe du mode preview
u : utils : Pleins de fonctions/programmes que Make3D et ses composants utilisent, et n'ont normalement pas à être utilisés par l'utilisateur.
v : toutes les variables globales servant de paramètre
w :
x :
y :
z :

Tout ce qui est en bold n'est pas encore crée/conçu/pensé.

Si jamais vous avez des idées de fonction à rajouter à make3D, des choses que vous avez envie qu'il soit capable de faire, même impensable (dans la limite du raisonnable hein), lâchez vous !! :#tritop#:
ya pleins de cases à remplir, et ça serait génial de pouvoir mettre toutes les chambres au complet !

@+
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [W.I.P] Make3D pour Nspire CAS

Unread postby JayTe » 27 May 2010, 18:54

Ce que je trouverai génial pour faire de make3d une application de géométrie dans l'espace super complète, ce serait d'intégrer de la géométrie analytique: par exemple pouvoir représenter des plans, droites, surfaces définis directement par leurs équations, ou par 2/3 points pour les droites/plans, et ensuite de faire des calculs, comme par exemple les intersections entre deux objets, ou alors donner l'équation et définir un objet qui serait parallèle/perpendiculaire à un autre... là il y aurait plein de trucs à faire :#tritop#:



mais bon ça sera pas évident à coder :;):


edit: et puis pendant que j'y pense, pourquoi pas rajouter des vecteurs et faire joujou avec, en pouvant définir par ex un plan en donnant un point et un vecteur normal, ou une droite avec un vecteur directeur et un point; ou faire des calculs de produits scalaires/produits vectoriels... ça serait énorme :D:
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

PreviousNext

Return to Nspire-Lua

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2499 utilisateurs:
>2471 invités
>21 membres
>7 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)