Új hozzászólás Aktív témák
-
Lakers
tag
Sziasztok!
Tudtok ajánlani olyan helyet, ahol grafikai feladatok megvalósítása van C nyelven? Egyszerűre gondolok, mint sokszögek rajzolása, egérrel való mozgatása, háttérszínezése. (Google barátom által talált oldalak példakódjai sokszor vírust is rejt...)
-
Lakers
tag
Sziasztok van egy kis problémám, grafika C. A program nem mást csinál, mint egy hermitív ívet/görbét képezz le. Azt mondta a gyakvezér, hogy csak egyet kell megírni, aztán csak mátrix cserét kell végrehajtani, hogy megkapjuk a beizer vagy b-spline görbét.
nos én ivrajzolo(pontok, M, -1, 2); ezt ivrajzolo(pontok, M, 0, 1);-re modósítottam
de nem igazán látszik a szépsége...MATRIX M = {{
{-1.0 / 6.0, 0.5, -1.0 / 3.0, 0.0},
{0.5, -1.0, -0.5, 1.0},
{-0.5, 0.5, 1.0, 0.0},
{1.0 / 6.0, 0.0, -1.0 / 6.0, 0.0}}} vagy pedig ezt a részt is másra kéne módosítanom?# include "graphics.h"
# include <conio.h>
# include <math.h>
# include <stdio.h>
typedef struct pont
{
double x,y;
} PONT;
typedef struct{
float t[4][4];
}MATRIX;
void ivrajzolo (PONT G[4], MATRIX M, float a, float b){
float lepeskoz = (b - a) / 100;
PONT C[4] ={0,0, 0,0, 0,0, 0,0};
for(int i = 0; i < 4; i++)
for(int j = 0; j < 4; j++){
C[i].x += G[j].x * M.t[j][i];
C[i].y += G[j].y * M.t[j][i];
}
PONT Q;
float t= a;
Q.x = C[0].x * t*t*t + C[1].x * t*t + C[2].x * t + C[3].x * 1;
Q.y = C[0].y * t*t*t + C[1].y * t*t + C[2].y * t + C[3].y * 1;
moveto(int(Q.x),int(Q.y));
for ( t=a ; t < b ; t+= lepeskoz ){
Q.x = C[0].x * t*t*t + C[1].x * t*t + C[2].x * t + C[3].x * 1;
Q.y = C[0].y * t*t*t + C[1].y * t*t + C[2].y * t + C[3].y * 1;
lineto(int(Q.x),int(Q.y));
}
}
int main()
{
int gd,gm;
initgraph(&gd,&gm,"");
gd=VGA;
gm=VGAMED;
int page=0;
int ap;
int i=0;
PONT pontok[4] = {290,300,330,200,430,130,500,200};
MATRIX M = {{
{-1.0 / 6.0, 0.5, -1.0 / 3.0, 0.0},
{0.5, -1.0, -0.5, 1.0},
{-0.5, 0.5, 1.0, 0.0},
{1.0 / 6.0, 0.0, -1.0 / 6.0, 0.0}}};
for (;;)
{
setactivepage(page);
cleardevice();
for ( i=0 ; i<4 ; ++i)
circle(integer(pontok[i].x),integer(pontok[i].y),3);
ivrajzolo(pontok, M, -1, 2);
/* Egerkezeles */
if (!balgomb) ap = getactivepoint((pont2d*)pontok,4,5);
if (ap >= 0 && balgomb)
{
pontok[ap].x = egerx;
pontok[ap].y = egery;
}
/* Egerkezeles vege */
setvisualpage(page);
page = 1-page;
if (kbhit())
break;
}
closegraph();
return(0);
} -
Lakers
tag
A minxy.x és a minxy.y és a többieket, hogyan kell deklarálni? A programnak egy kis részlete volt megadva és tovább magunknak kellett megcsinálni. Nagyon nem tetszik a fordítonak és fogalmam sincs, hogy mit vétettem.
#include "graphics.h"
#include <math.h>
#define R 50;
double f(double x){
return sin(x)/x;
}
typedef struct pont
{
double x,y;
} pont;
pont2d w2v(pont2d pont, pont2d minxy, pont2d maxxy, pont2d minuv, pont2d maxuv)
{
return (pont2d)
{
(pont.x-minxy.x)*(maxuv.x-minuv.x)/(maxxy.x-minxy.x)+minuv.x,
(pont.y-minxy.y)*(maxuv.y-minuv.y)/(maxxy.y-minxy.y)+minuv.y
};
}
int main(){
int gd, gm;
gd=VGA;
gm=VGAMED;
initgraph(&gd,&gm,"");
int minxy, minxx, maxxy, maxxx, minuv, maxuv, vmin, vmax;
int mx, my;
mx=getmaxx();
my=getmaxy();
double i;
minxy.x=-(4*M_PI) *R;
minxy.y=(4*M_PI) *R;
maxxy.x=mx;
maxxy.y=my;
minuv.x=mx/4;
maxuv.x=mx/4 * 3;
vmin=my/4;
vmax=mx/4 * 3;
rectangle(minuv.y, minuv.y, maxuv.x, maxuv.y);
line (umin+umax)2, vmin, (umin+umax/2), vmax);
line (umin, (vmin+vmax)/2, umax(vmin+vmax)/2;
setcolor(6);
pont.x=-(4*M_PI) *R +mx/2;
pont.y=(f(-(4*M_PI))*R +my/2;
moveto(-(4*M_PI)*R, f(-(4*M_PI);
for(i=-(4*M_PI); i <= (4*M_PI); i++)
pont.y=f(i) * R + my /2;
pont.x=f(i) * R + mx /2
x=(x-xmin)(umax-umin)/(xmax-xmin)+umin;
y=(y-ymin)(vmax-vmin)/(ymax-ymin)+vmax;
lineto(pont.x,pont.y);
}
getch();
closegraph();
return(0);
}
}
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Drága lesz a terméktámogatáson túl használni Windows 10-et
- eBay
- Politika
- Renault, Dacia topik
- Kerti grill és bográcsozó házilag (BBQ, tervek, ötletek, receptek)
- Fehér zakót öltenek a Super Flower platinás Leadex VII Pro tápjai
- Épített vízhűtés (nem kompakt) topic
- A tüntetések ellenére is bővítheti német gyárát a Tesla
- Android alkalmazások - szoftver kibeszélő topik
- WLAN, WiFi, vezeték nélküli hálózat
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs