Cini.h

Fermé
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015 - 29 janv. 2015 à 23:23
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015 - 31 janv. 2015 à 17:10
Bonjour,

Certains d'entre vous ont-ils entendu parler de la bibliothèque cini.h ?
Si oui j'ai quelques questions assez précises à poser:
En gros je viens de commencer le C et j'ai un devoir de C à rendre mais je n'ai pas du tout eu le temps de m'intéresser à la partie "géomètrie" car je n'avais pas d'ordi jusqu'à aujourd'hui et c'était déjà assez dur comme ça d'apprendre le reste.

Par avance je vous remercie de l'aide que vous m'apporterez!

Voici une des questions:


On considère un rectangle R1 de coin supérieur gauche (0; 0), de largeur 200 et de hauteur 50 et un
autre rectangle R2 dont les coordonnées du coin supérieur gauche, largeur et hauteur sont définies par
des #define. Ecrire une programme qui dessine R1 plein en bleu, R2 plein en rouge, et le rectangle
intersection de R1 et R2 (s'il existe) plein en jaune.

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 janv. 2015 à 23:31
Ben voyons...
Ce ne sont pas des questions, mais l'énoncé tel quel...
Si tu as des questions précises, pose-les.
0
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015
29 janv. 2015 à 23:37
Oui en effet et j'aimerais savoir comment répondre à cet énoncé, je ne veux pas la réponse hein mais juste la méthode, je souhaite comprendre.
Je n'ai pas le temps en une nuit de me faire tous les tutos d'un site ou d'un autre mais je m'y mettrai dés la semaine prochaine maintenant que j'ai un ordi.
Les livres que j'ai pu avoir sous la main sont très lourds et peu pédagogiques d'où ma question. Surtout que à ce que j'ai pu comprendre cini.h est une blibliotheque assez spéciale.
0
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015
Modifié par ArtyBours le 30/01/2015 à 00:37
J'avais tenté de le traduire sur papier mais je bloque à l'intersection des deux rectangles je ne sais pas trop comment faire ça.
Pour R1 je suppose que ça doit être quelque chose du style:
A (0;0)
B (200;0)
C (200;-50)
D (0;-50)
draw_rectangle_remplis_en_bleu A B C D

Après R2:
de longueur L
et de hauteur H
A'(x;y) coin supérieur gauche
B'(x+L;y)
C'(x+L;y-H)
D'(x;-H)
draw_rectangle_remplis_en_rouge A' B' C' D'

Ca se complique pour la suite, comment voir s'il y a une intersection:
-Vérifier qu'un des coins de R2 a des coordonnées comprises dans R1 (le faire pour chaque coin donc) et si c'est le cas comment définir quelle partie de R2 est dans R1 ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 30/01/2015 à 00:34
Tu as juste posé les sommets du rectangle.
Ce n'est pas ce que j'ai dit... Il faut passer par des boucles pour remplir le rectangle. Relis mon post pour t'en inspirer.
Pour l'intersection, ce sont des maths. Comment traduis-tu les coordonnées des sommets du rectangle (en supposant qu'il existe et comment traduis-tu son existence (cela faut 2 inéquations, genre : si x<...). Pose le dessin sur un papier, c'est simple. Puis, il ne restera plus qu'à colorier ce rectangle.
Note : tu as une erreur dans les sommets de R2
0
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015
Modifié par ArtyBours le 30/01/2015 à 01:18
"Il faut passer par des boucles pour remplir le rectangle."

"Dessiner(couleur, i, j) par : CINI_draw_pixel(i , j, "couleur"); "
Il n'y a pas de boucle là dedans. Donc pourquoi remplir le rectangle avec une boucle ? Je ne comprends pas.
EDIT je crois avoir compris pour les rectangles en fait ils se tracent à l'aide boucles !


For i=0 i<200 i++
For j+0 J<-50 j++
CINI draw pixel i, j bleu ?
J'ai bien fait les rectangles sur papier mais l'intersection peut être de plein de formes selon que R2 est entièrement dans R1 ou l'inverse ou juste une partie seulement...

Concernant R2 où est mon erreur ? J'en avais une dans R1 mais dans R2 je ne vois pas
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
30 janv. 2015 à 21:21
For i=0 i<200 i++
La syntaxe est à revoir.
CINI draw pixel i, j bleu ?
Pareil, à revoir.

J'ai bien fait les rectangles sur papier mais l'intersection peut être de plein de formes
Euh non... A moins d'être un magicien, on a dans tous les cas un rectangle (lorsqu'il existe). Il suffit donc de calculer les sommets (c'est une bête soustraction...).
0
ArtyBours Messages postés 5 Date d'inscription jeudi 29 janvier 2015 Statut Membre Dernière intervention 31 janvier 2015
31 janv. 2015 à 17:10
C'est bon j'ai réussis je crois !
Quand je disais de plein de formes je voulais dire que ce pouvait être le coin gauche de R2 juste dans R1 ou bien le rectangle entier etc
J'ai passé pas mal de temps à bosser et voilà ce que j'ai au final, qu'en pensez-vous ?

#include <stdio.h>
#include <cini.h>
#define CGX 0
#define CGY 0
#define LARG 200
#define HAUT 50

int main() {
int i,j;
CINI_open_window(300,300,"Question9");
for(i=0; i<200; i++) {
for(j=0; j<50; j++) {
CINI_draw_pixel(i,j,"blue");
}
}
for(i=CGX; i<LARG; i++) {
for(j=CGY; j<HAUT; j++) {
if(i<200 && j<50) {
CINI_draw_pixel(i,j,"yellow");
}
else {
CINI_draw_pixel(i,j,"red");
}
}
}
CINI_loop();
return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 janv. 2015 à 23:46
Déjà pour le vocabulaire, cini.h n'est pas une bibliothèque mais un header (contient tous les prototypes des fonctions).

Pour la méthode, il faut déjà poser l'algorithme sur un papier.
Cela veut dire que tu oublies le C et cini.h dans un premier temps, et tu traduis en français ce qu'il faut faire.
Par exemple :

Pour i = 0 à ... Faire
Pour j = .... Faire
Dessiner(couleur, i, j).
etc.


Une fois que tu auras ça, on pourra t'aider à convertir en C / cini.h.

Cdlt,
-1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 janv. 2015 à 23:56
Ensuite, il te suffira de remplacer :
- Dessiner(couleur, i, j) par : CINI_draw_pixel(i , j, "couleur");
- Pour ... Faire par : for (...; ...; ...)
Pour savoir comment coder le for : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14722-les-boucles (tu vas au chapitre "La boucle for". C'est court à lire et ça t'aidera si tu ne sais pas écrire une boucle.

Bon courage.
0