Kolmiuloitteiset kompleksiluvut

Seuraa 
Viestejä979
Liittynyt27.8.2007

Tuli yöllä pähkäillessä taas kaikkee paskaa mieleen: aloin pohtimaan Riemannin pallon käyttöä lukumaailman laajentamiseen.

Jos 3D-luvun yhdistää suoralla Riemannin pallon kautta origoon, niin tuolle vektorin pituutta vaille yksikäsitteiselle pisteelle löytyy vastine kompleksitasosta.

Siis jos 3D-luku ajatellaan vektorina, niin normi ja leikkaus Riemannin pallossa määrittelee tämän luvun yksikäsitteisesti. Nythän voitaisiin projisoida tämä 3D-luku komplesitasoon, jossa koko analyysin koneisto on käytössä, ja tämän jälkeen heittää tulokset samaa reittiä takaisin kolmiuloitteiseen avaruuteen!

Olisiko tuossa mahdollisuus kiertää kvaternioiden yms. rajoittuneisuuden aiheuttamat ongelmat korkeampiuloitteisessa analyysissä?

EDIT:

Nyt voi kyllä mennä perseeseen ja syvälle, mutta annan kieliposkella idea esim. kertolaskusta.

luku1: a = (x1, y1, z1) ja luku2: b = (x2, y2, z2)

Nyt projisoidaan molemmat pisteet komplesitasoon

a*b = |a||b|*( tason vastaavien projektiopisteiden tulon yksikkövektori) = b*a

luku a*b heitetään sitten takaisin kolmiuloitteeseen avaruuteen kompleksitason kertolaskun muodostaman projektiopisteen Riemannin pallolla sekä origon kautta kulkevan suoran suuntaisesti kerrottuna skalaarilla |a||b|.

Tollai määritelty kolmiuloitteinen kertolasku kommutoisi ilman vittuiluja.

Omasta mielestä toi on ihan bijektiivinen systeemi, eikä mitään sääntöjä rikota.

EDIT 2:

Nyt voi jo mennä Lidlin halpiskaljan piikkiin, mutta tonne kolmiuloitteeseen avaruuteen voitaisiin ihan hyvin läväyttää hyper-Riemannin pallo, johon sitten prjojisoitaisiin neliuloitteisen avaruuden lukuja, ja edelleen Ad infinitum. Sieltä sitten vaan bijektiivinen kuvaus tasoon.

Open mapping theorem n-uloitteisessa lukujoukossa laittas keuliin jokaisella matikanopiskelijalla!

" sähkö (se sähkö, jota tuotetaan mm. voimalaitoksissa) ei ole energiaa "
- Vastaaja_s24fi

“Jos et ole kaksikymppisenä vihreä, sinulla ei ole sydäntä. Mutta jos et ole nelikymppisenä perussuomalainen, sinulla ei ole aivoja.”
- Cargo

Sivut

Kommentit (17)

abskissa
Seuraa 
Viestejä3654
Liittynyt9.10.2008
Cargo
Jos 3D-luvun yhdistää suoralla Riemannin pallon kautta origoon, niin tuolle vektorin pituutta vaille yksikäsitteiselle pisteelle löytyy vastine kompleksitasosta.

Eikös "vektorin pituutta vaille yksikäsitteinen piste" ole oikeastaan origon kautta kulkeva suora? Myöhemmin puhut kuitenkin bijektiosta C <-> R^3 (tai, jos oikein ymmärsin, jopa C <-> R^n, n>3). Miksi se tasoon projisoiminen olisi jotenkin hedelmällisempää Riemannin pallon kautta kuin pudottamalla vaikka suoraan yksi komponentti pois? Voihan sen tason pisteen joka tapauksessa tulkita kompleksilukuna ja käyttää kaikkea analyysikalustoa ihan miten lystää.

We're all mad here.

Cargo
Seuraa 
Viestejä979
Liittynyt27.8.2007
abskissa
Miksi se tasoon projisoiminen olisi jotenkin hedelmällisempää Riemannin pallon kautta kuin pudottamalla vaikka suoraan yksi komponentti pois?



Ton kieliposkella tehdyn pähkäilyn ideana olis saada aikaseks kommutoiva kertolasku R^3:een.

Kolmiuloitteisen luvun potenssi menis sitten niin että Riemannin pallon kautta tasoon projisoitua (melkein kaikkialla bijektiivisellä kuvauksella P) 3D-lukua a, joka on korotettu potenssiin n ja lähetetty käänteisprojisiolla P^(-1) takas kolmiuloitteeseen avaruuteen kerrotaan alkuperäisen 3D-luvun normin potenssilla n. Siis kompleksinen potenssi z^n voidaan laskea ja sen kuva heittää tasosta takas Riemannin pallon kautta. a^n = P^(-1)[P[a]^n]*|a|^n

En nyt sitten tiä onko tässä systeemissä päätä eikä häntää, mutta siististi toi menis. Jos kunta-aksioomat täyttyy ja jatkuvuus lienee selvää, niin sitte voitais ruveta rakentaan holomorfista teoriaa kun kerta potenssi olis määritelty hyvin, ja siittähän päästää suoraan käsiks potenssisarjoihin ja edelleen kaikkiin alkeisfunktioihin.

" sähkö (se sähkö, jota tuotetaan mm. voimalaitoksissa) ei ole energiaa "
- Vastaaja_s24fi

“Jos et ole kaksikymppisenä vihreä, sinulla ei ole sydäntä. Mutta jos et ole nelikymppisenä perussuomalainen, sinulla ei ole aivoja.”
- Cargo

Vierailija

Hei, ideasi 3D-kertolaskulle on mielenkiintoinen, mutta sellaisenaan se ei toimi. Ongelmallinen kohta on käänteiskuvauksen P^(-1) olemassaolo.

Esimerkiksi luku 8 kompleksitason alkiona voidaan esittää tulona 8=(3+i)(3-i). Nyt on olemassa vektorit a ja b siten että P(a)=3+i ja P(b)=3-i, joille |a|=sqrt(10)
ja |b|=sqrt(10). Kertolaskusi määritelmästä seuraa että |P^(-1)((3+i)(3-i))|=10. Samalla tavalla voidaan päätellä käyttäen luvulle 8 esitystä 8=2*4 että |P^(-1)(2*4)|=8. Tämä johtaa ristiriitaan 8 =|P^(-1)(2*4)|=|P^(-1)(8)|=|P^(-1)((3+i)(3-i))|=10.

Vierailija

Mä en oikein osaa lukea sellaista monimutkaiselta näyttävää matemaattista formaattia, koska jossain vaiheessa, kun niitä merkintäkoukeroita alkaa olemaan liikaa, niin tuun sokeaksi.

C-kielen formaattia ymmärrän aika pitkälle, mutta sen suhteen olen vieläkin syvemmällä umpikujassa. Jos siinä C-funktiossa on enemmän kuin 10 riviä, niin tulen taas sokeaksi. Viimeisenä, muttei vähäisimpänä puutteena, en ymmärrä toisten kirjoittamaa koodia ollenkaan, ellei se ole äärimmäisen efektiivistä bittien, lukujen, logiikan ja arvojen pyörittelyä.

Siksi mä en oo sopinut vielä yhteenkään ohjelmointifirmaan. 2-3 vuotta, ja sitten mulla palaa päreet siihen saatanan lässyttämiseen, jaaritteluun, paskan tuottamiseen ja siihen loputtomaan epäjärjestykseen, jota tämä saatanan IT-sukupolvi suoltaa.

Mä oon saanut vain kerran potkut tuolla elektroniikkatiellä. Muista firmoista mä oon lähtenyt pää savuten tasan silloin, kun ne päreet palaa joskus yleensä toisena tai kolmantena työvuotena, harvemmin vasta neljäntenä työvuotena.

Siis mitenkä tämä nyt liittyi tähän yhteyteen? Meinaan sitä vain, että vaikka oon noin näennäisesti varustettu vähemmillä lahjoilla, niin kuitenkin tämä sun juttusikin pitäisi toimia, kun sen vain runnoo ja takoo siihen 3D-muottiin.

Ja taas pitää alustaa, jotta voin sanoa, mitä tarkoitan...

Hamilton aikanaan fundeerasi tätä 3D-kompleksiavaruutta. Mutta vuosista huolimatta hän ei vain löytänyt sitä, vaikka etsi, tutki ja taas fundeerasi. No sitten hän lopulta löysi symmetrian kvaternioista. Mutta ne ei oo vaihdannaisia. Määkin tutkin niitä tuloksia joskus viimevuosituhannella, ja petyin, kun niissä ei ollu kaikkien akseleiden välillä kaunista fraktaalirakennetta.

Sitten määkin aloin tutkimaan, etsimään, fundeeraamaan. Sain aikaan jonkun omasta mielestä koko matematiikan tulevaisuuden mullistavan 3D-pläjäyksen, jonka kaikkien akseleiden välille piirtyi ensin jotakin sotkua, ja sitten se varsinainen 3D-fraktaalirakenne ei ollu sellainen kauneuden vangitsema maisema, jollainen se oli mielessäni.

Mää jouduin kuitenkin elämään sen rumuuden kanssa ja runnoin teoriani finaaliin. Joku neliöjuuri oli jossain vähän samanlainen kuin joku toinen neliöjuuri jossain muualla. Siitä sitten piti repiä se todistus ja osoitus, että näin on, niin kuin joku ainstain.

Matkasin sitten ylpeänä raahesta vaasaan mukanani valtava teoria. Vaasassa oli vain yks aika kova matematiikan taitaja, ja ajattelin, että hänen kauttaan teoriani menisi suoraan Sience-lehden painoon, joka jouduttaisi kieli pitkällä odottamaani varmaa noobelin palkintoa.

Toisin kävi. Hän polki se saman tien maan rakoon, ja totesi, että lukuteoriassa on osoitettu niin ja näin, jolloin tämä j-laajennus on mahdotonta. Katkerana ja hyvin pettyneenä palasin takaisin raaheen.

Sitten meni jokin aika, ja purin hampaani yhteen. Saatana, minä näytän. Joku 12-13 vuotta piti tutkia, etsiä, fundeerata. Löysin lopulta jonkun vaihdannaisen a+bi+cj+... pläjäyksen. Koska mun algebratieto ja C-taito kehittyi siinä ohessa, niin olin matkassa vahvemmilla eväillä, sarjoilla.

Sitten mun tartti ohjelmoida vain brute-force, joka plarasi kaikki mahdolliset ja mahdottomat kantavektoreiden tulotaulukot. Taulukon myötä alkeisoperaatiot on määritelty, joilla päästään suoraan kiinni sarjoihin, ja sitä kautta metodin mielekkyyteen. Kun siellä lopulta oli vain yksi mielekäs kombinaatio, joka toteutti vaaditun harmonian, niin siinä se sitten oli.

Sillä sun e, i, pii -kaavan pyöritelyllä sain siihen myös kaikki logaritmit valideiksi. Eli sen iterointi ei enää lähde miinus reaalisella värähtelemään ja siten räjähtäämään pillan päreiksi äärettömyyteen.

Vieläkin joutuu alustamaan vähän lisää, jotta voin sanoa sulle sen yhden pointin liittyen nimenomaan aitoihin 3D-kompleksilukuihin.

Niin, siis nyt voi kyhätä jonkinlaisia lukuteoreettisia ominaisuuksia kantavektoritaulukoiden päälävistäjien olioille. Luulisin, että puoli A4:sta riittää ja muun paskanjauhannan voi jättää omaan arvoonsa.

Nyt päästään lopulta tähän sun juttuus.

Mun pläjäyksessä on odd, even ja plus ja miinus. Sen vuoksi ne kuplat ilmentyvät 2^n:ssä.

Sun pläjäyksessä on odd, even ja joku muu vielä tuntematon parillisuusparittomuusominaisuus sekä plus, miinus ja joku muu vielä tuntematon plusmiinusjokuominaisuus.

Jos nuo alkeisoperaatiot muodostavat sitten keskinäisen yhdenvertaisuuden vaihdannaisuudella, niin kompleksiolioiden ilmentymä 3^n:ssä voi olla konkreettinen.

Alkeisoperaatioiden sommitelussa ensimmäinen täydellinen luku 6, jolla voidaan lausua myös kaikki alkuluvut, voi myös olla keskeisessä roolissa, jos alkeisoperaatioiden määrittely joudutaan lausumaan kahdella arvolla kolmella akselilla, siis joku (a, b) ? (c, d) ? (e, f)

En minä tiedä.

3D-fraktaalien uskomaton kauneus on olemassa jossain.

Vain etsivä voi sen löytää.

Vierailija

Ton 3D-fraktaalin voi esittää neliulotteisessa sfäärissä siten, että sumuarvo iteraatiosta (0, 0, 0, 0, 0, 0, u, v) on valovoima 3D-avaruuden pisteelle (x, y, z), jossa:

x = iteraatio (u, v, 0, 0, 0, 0, 0, 0)

y = iteraatio (0, 0, u, v, 0, 0, 0, 0)

z = iteraatio (0, 0, 0, 0, u, v, 0, 0)

Vaikka mun läppärissä on melkoinen laskuteho, silti kaikkien pisteiden iteraatio kestää likimain puolivuotta.

Voisin kaiketi tehdä näytönsäästäjän, joka luppoajalla laskisi jotain osaa tuosta 3D-fraktaalista, ja lähettäisi valmiin lasketun datapaketin yhteen keräilykohteeseen.

Kuinkahan moni moisen näytönsäästäjän itselleen laittaisi?

Vierailija

Ohessa 4D-kompleksiolio on kirjoitettu niin yksinkertaiseen kuosiin, ettei sitä enää helppolukuisemmaksi saa.

Nyt jos KERTALUVUKSI laitetaan 2, olio antaa kompleksilukujen tulokset.

Jos KERTALUVUKSI laitetaan 1, olio antaa reaalilukujen tulokset.

summa summarum: yli vuosikymmen raakaa työtä ja tutkimista, niin kyllä se Hamiltonin alkuperäinen visio kompleksijatkumosta löytyi.

Siihen 3D-fraktaaliin liittyen 4D-kompleksioliolla voi nyt loihtia:

x = recomplex(u, v, 0, 0, 0, 0, 0, 0)
y = recomplex(0, 0, u, v, 0, 0, 0, 0)
z = recomplex(0, 0, 0, 0, u, v, 0, 0)
f = recomplex(0, 0, 0, 0, 0, 0, u, v) = fog

[code:3n222sfz]#include
#include
#include
#include

class recomplex
{
public:

#define KERTALUKU 8
double e[KERTALUKU];

recomplex(void);
~recomplex(void);
recomplex(double);
recomplex(double *);
recomplex(char*, ...);

recomplex(int);
recomplex(int, int);
recomplex(double, double);
recomplex(int, int, int, int);
recomplex(double, double, double, double);
};

recomplex::~recomplex(void)
{
}

recomplex::recomplex(void)
{
memset(this, 0, sizeof(recomplex));
}

recomplex::recomplex(double a)
{
memset(this, 0, sizeof(recomplex));
e[0]=a;
}

recomplex::recomplex(double *a)
{
int n=(int)sizeof(double);
memcpy(e, a, n*KERTALUKU);
}

recomplex::recomplex(int a)
{
memset(this, 0, sizeof(recomplex));
e[0]=a;
}

recomplex::recomplex(int a, int b)
{
memset(this, 0, sizeof(recomplex));
e[0]=a; e[1]=b;
}

recomplex::recomplex(double a, double b)
{
memset(this, 0, sizeof(recomplex));
e[0]=a; e[1]=b;
}

recomplex::recomplex(int a, int b, int c, int d)
{
memset(this, 0, sizeof(recomplex));
e[0]=a; e[1]=b; e[2]=c; e[3]=d;
}

recomplex::recomplex(double a, double b, double c, double d)
{
memset(this, 0, sizeof(recomplex));
e[0]=a; e[1]=b; e[2]=c; e[3]=d;
}

////////////////////////////////////////////////////////////
// Muodostin recomplex(char*, ...) //
// //
// Esim. //
// //
// recomplex x("2d", 2, 3), x saa arvon //
// x = 2.0000 + 3.0000i //
// //
// recomplex y("2f", 1.2345, 6.7891), y saa arvon: //
// y = 1.2345 + 6.7891i // //
// //
// - formaatissa annetaan ensin lukujen määrä, esim 2. //
// - d tarkoittaa, että luvut annetaan kokonaislukuina. //
// - f tarkoittaa, että luvut annetaan liukulukumuodossa. //
////////////////////////////////////////////////////////////
recomplex::recomplex(char *f, ...)
{
int i, j, kpl=atoi(f), step;
memset(this, 0x00, sizeof(recomplex));
unsigned long P=(unsigned long)&f+sizeof(char*);

for (j=0; f[j]; j++)
{
if (f[j]=='d') step=4;
if (f[j]=='f') step=8;
}

step=step==4? sizeof(int): sizeof(double);
for (i=j=0; i
e[i] = step == sizeof(int)?
*(int*)P: *(double*)P;
}

recomplex operator+(recomplex a, recomplex b)
{
for (int n=0; n
a.e[n]+=b.e[n];
return a;
}

recomplex operator-(recomplex a, recomplex b)
{
for (int n=0; n
a.e[n]-=b.e[n];
return a;
}

recomplex operator-(recomplex a)
{
for (int n=0; n
a.e[n]=-a.e[n];
return a;
}

recomplex operator*(double k, recomplex x)
{
for (int i=0; i
x.e[i]*=(double)k;
return x;
}

recomplex operator*(recomplex x, double k)
{
return k*x;
}

recomplex operator*(recomplex a, recomplex b)
{
int *KantavektoreidenTulot(void);
int *R=KantavektoreidenTulot();
int i, j, n=(int)KERTALUKU*2;

double x[KERTALUKU*2];
double y[KERTALUKU*2];
double t[KERTALUKU*2];

for (i=j=0; i
x[j+1]=y[j+1]=t[j]=t[j+1]=0.0,
x[j]=a.e[i], y[j]=b.e[i];

for (i=0; i
for (j=0; j
t[R[i*n+j]]+=x[i]*y[j];

for (i=j=0; i
t[i]=(double)(t[j] - t[j+1]);
return *(recomplex*) t;
}

void GeneroiKantavektoreidenTulot(int *R, int n)
{
int I=0, J=n-1, i;
int X=n, Y=J+n, j;
int k=KERTALUKU*2;

for (i=I; i<=J; i++)
for (j=I; j<=J; j++)
{
R[i*k+X+j]=R[i*k+j]+X;
R[(X+j)*k+i]=R[i*k+j]+X;
R[(Y-i)*k+Y-j]=J-R[i*k+j];
}

if (n+n < KERTALUKU*2)
{
GeneroiKantavektoreidenTulot(R, n+n);
}
}

int* KantavektoreidenTulot(void)
{
static int R[KERTALUKU*KERTALUKU*4]={-1};
if (R[0] == -1)
{
int EnsinOliNolla=0;
R[0]=(double)EnsinOliNolla;
GeneroiKantavektoreidenTulot(R, 1);
}
return R;
}

recomplex operator/(recomplex x, double k)
{
for (int i=0; i
x.e[i]/=(double)k;
return x;
}

recomplex operator/(recomplex x, recomplex y)
{
recomplex z;

for (int i, n=KERTALUKU; n>=2; n/=2)
{
for (z=y, i=n/2; i
z.e[i]=-z.e[i];
x=x*z; y=y*z;
}

return x/y.e[0];
}

recomplex operator/(double k, recomplex x)
{
return recomplex(k)/x;
}

double abs(recomplex x)
{
recomplex z;
double r, c;
int i, j=1, n;

for (n=KERTALUKU; n>=2; n/=2, j+=j)
{
for (z=x, i=n/2; i
z.e[i]=-z.e[i];
x=x*z;
}

r=fabs(x.e[0]);
c=1.0/(double)j;
return pow(r, c);
}

recomplex exp(recomplex x)
{
double t=1.0;
recomplex sum(1.0);
recomplex xx=x; sum=sum+x;

for (int i=2; i<160; i++)
{
xx = xx*x;
sum=sum+xx/(t*=i);
}
return sum;
}

recomplex sin(recomplex x)
{
double t=1.0;
recomplex sum(0.0);
recomplex y=x*x, xx=x;

for (int i=1, sg=0; i<160; i+=2, sg++)
{
if (sg&1) sum=sum-xx/t;
else /**/ sum=sum+xx/t;
xx=xx*y; t*=(i+1)*(i+2);
}
return sum;
}

recomplex cos(recomplex x)
{
double t=2.0;
recomplex sum(1.0);
recomplex y=x*x, xx=y;

for (int i=2, sg=1; i<160; i+=2, sg++)
{
if (sg&1) sum=sum-xx/t;
else /**/ sum=sum+xx/t;
xx=xx*y; t*=(i+1)*(i+2);
}
return sum;
}

recomplex asin(recomplex x)
{
recomplex sum=x;
recomplex xx=x*x;

for (int i=3; i<160; i+=2)
{
double ylos=1.0;
double alas=1.0;

for (int j=1; j
{
ylos*=j;
alas*=(j+=1);
}
sum=sum+ylos*(x=x*xx)/(alas*i);
}
return sum;
}

recomplex acos(recomplex x)
{
return recomplex(1.57079632679489661923)-asin(x);
}

recomplex pow(recomplex x, int n)
{
if (n)
{
recomplex t=x;
int i=n<0? -n: n;
for (--i; i; i--) t=t*x;
return n>0? t: recomplex(1.0)/t;
}
else
{
return recomplex(1.0);
}
}

double gabs(recomplex c)
{
double sum=0;
for (int i=0; i
sum+=c.e[i]*c.e[i];
return sum;
}

recomplex ln(recomplex c)
{
double t, r1, r2;
recomplex fx, dx;
recomplex z(1.0);
recomplex x(1.0);
r2=3141592653589;

for (int k=2; k<160; k++)
for (int j=0; j<256; j++)
{
recomplex xx=x;
fx=z+x; dx=z;
t=(double)1;

for (int i=2; i<=k; i++)
{
dx=dx+i*xx/(t*=i);
xx=xx*x; fx=fx+xx/t;
}

r1=r2;
x=x-(fx-c)/dx;
r2=gabs(x);

if ((k<159) && (j>4) && (fabs(r1-r2)<1e-10))
{
r2=3141592653589793238462643383279;
break;
}
}
return x;
}

recomplex pow(recomplex a, recomplex x)
{
double t=(double)1;
recomplex sum(1.0);
recomplex ln(recomplex);
recomplex y = x*ln(a), xx=y;

sum=sum+xx;

for (int i=2; i<160; i++)
{
xx = xx*y;
sum=sum+xx/(t*=i);
}

return sum;
}

recomplex pow(recomplex x, double n)
{
recomplex pow(recomplex, recomplex);
return pow(x, recomplex((double)n));
}

//////////////////////////////////
// jrnd palautaa satunnaisluvun //
// väliltä [0, max-1] //
//////////////////////////////////
unsigned long jrnd(unsigned long max)
{
static unsigned long R16A=1L;
static unsigned long R16B=2L;
R16A -= 0x012357bfL;
R16B += 0xfedca201L;
R16A += (R16A>>16)^(R16B<<16);
R16B -= (R16A<<16)^(R16B>>16);
return (R16A^R16B)%max;
}

///////////////////////////////////
// drand palautaa satunnaisluvun //
// väliltä [-1.0, +1.0] //
///////////////////////////////////
double drand(void)
{
double x=jrnd(0xfffffffb);
unsigned long jak=0xfffffffb;
return jrnd(0x02)? -x/jak: x/jak;
}

////////////////////////////////////////
// recomplex_rnd palautaa satunnaisen //
// recomplex luvun funktioiden //
// testaamiseen. //
////////////////////////////////////////
recomplex recomplex_rnd(void)
{
recomplex x;
for (int i=0; i
x.e[i]=drand();
return x;
}

///////////////////////////////////////////////////////////
// Jossain 20-alkion kohdalla, kun kantavektorin tunnus //
// on suurempi kuin 'z', kantavektorin tunnus saattaa //
// olla jokin kirjaimesta poikkeava merkki. Itse lasku- //
// operaatioissa kantavektoreiden symbolisiin tunnuksiin //
// ei oteta kantaa. //
///////////////////////////////////////////////////////////
void print(recomplex a)
{
printf("%0.7f ", a.e[0]);
for (int n=1; n
printf("%c %0.7f%c ", a.e[n]<0?
'-': '+', fabs(a.e[n]), 'h'+n);
printf("\n");
}

void main(void)
{
recomplex c=recomplex_rnd();

recomplex x=ln(c);

print(x);
}
[/code:3n222sfz]

Vierailija

fog of war...

Osaatko käyttää kenties värejä tai vastaavaa...helpottaa kummasti...

(no joojoo, luulet vaan että osaat )

Vierailija

(Edellinen argumentoija kuuluu omaan arvoonsa, ja hatun nosto sille.)

Mutta jos teistä joku haluaa oikeasti perinteisen BGI:n, jossa kaikki Windows sekoilu on piilotettu, saa sitten pyytää exwin.cpp yksikön yv:nä multa.

Tolla WinBGI:llä, jonka tekemiseen on kulunut paljon aikaa, niin grafiikan tekeminen Windowsin apin allla on seuraavanlaisen helppoa, esim:

[code:w2qvpt13]#include "exwin.cpp"

int OwnMain(void)
{
putpixel(100, 100, RGB(255, 250, 240));
putpixel(101, 100, sininen);
putpixel(101, 101, punainen);
putpixel(100, 101, RGB(30, 99, 199));
rectangle(200, 200, 230, 240, harmaa, DoFill);
rectangle(400, 400, 444, 488, harmaa, DoNotFill);

for (;;)
{
Sleep(100);
if (updateCtrl()==Esc) break;
}

return 0;
}
[/code:w2qvpt13]

Vierailija
KBolt
fog of war...

Osaatko käyttää kenties värejä tai vastaavaa...helpottaa kummasti...

(no joojoo, luulet vaan että osaat )


Varmasti jokaisen sunnuntaiohjelmoijankin tietotaitoon kuuluu osata OpenGL. Tietysti voi käyttää jotain muutakin grafiikkatilakonetta, mutta OpenGL lienee käytetyin. Sumulla oikein käytettynä animaation saa huomattavasti lähemmäs reaaliluontoa.

Vierailija
Spock
KBolt
fog of war...

Osaatko käyttää kenties värejä tai vastaavaa...helpottaa kummasti...

(no joojoo, luulet vaan että osaat )


Varmasti jokaisen sunnuntaiohjelmoijankin tietotaitoon kuuluu osata OpenGL. Tietysti voi käyttää jotain muutakin grafiikkatilakonetta, mutta OpenGL lienee käytetyin. Sumulla oikein käytettynä animaation saa huomattavasti lähemmäs reaaliluontoa.

Juu, tämä pitää kyllä paikkansa

Tuli vaan mieleen tuo fog-juttu eräästä vanhasta peliohjelmointiprojektista...

(Edellinen argumentoija kuuluu omaan arvoonsa, ja hatun nosto sille.)
No älä nyt tollasesta nöksähdä
Kyllähän noista postauksista voi sen lukea että oikeasti tietoa löytyy...(siis sinulta). Kuten tuossa ylempänä kerroin....tuli vaan mieleen alkuaikojen fog-systeemit

Meinaan silloin joskus kun suomekieleen rantautui sana "nuubi"...varmaan 10 vuotta sitten...

HSTal
Seuraa 
Viestejä736
Liittynyt10.4.2009

r2=3141592653589793238462643383279;



Muuten hyvä, mutta Piin arvon suhteen kannattaa olla tarkkana! Kerran kun vierailin radioastronomien luona Bonnissa*, tutkijat olivat havainneet tietokoneessa hieman virheellisen piin arvon. Lopputulos oli kuitenkin se, että ei uskallettu muuttaa tätä piin arvoa oikeaksi, koska kaikkien tutkijoitten tulokset olisivat hieman muuttuneet.

_jone_ antaa viimeiset desimaalit ...279;

Pii jatkuu kuitenkin näin: ...2795028...

Eli oikein pyöristettynä _jone_ pitäisi kirjoittaa viimeiset desimaalinsa:

...280 eikä ...279 !

* Max-Planck-Institut für Radioastronomie

Vierailija
HSTal
Eli oikein pyöristettynä _jone_ pitäisi kirjoittaa viimeiset desimaalinsa:

...280 eikä ...279 !




ja niin hullulta kun se kuulostaakin, niin jouduin kerran mittaamaan pyöristyksen oikeellisuuden tilastollisesti. nimittäin, jos puhutaan positiivisesta ilmiöstä, nykyinen pyöristyssääntö on järjetön, koska:

[code:2t7w2l4x]0.0 - 0.4999... = 0
0.5 - 1.4999... = 1
1.5 - 2.4999... = 2
etc.
[/code:2t7w2l4x]
Nyt havaitaan heti, että arvo 0 on puolet huonompi kuin muut arvot! Miksi nollalle varattiin vain puolikas, kun muille varattiin tasapuolisesti limes(1)?

Varsinkin signaalinkäsittelyssä näitten ppyöristyssääntöjen kaa kannattaa olla varovainen. Jos signaali on esim. "tasasuunnattu", pyöristyksen sijasta vain leikataan. Vaihtuvalla plusmiinus-signaalilla pyöristys positiivisilla +0.5 ja negatiivisilla -0.5. Jotenkin niin.

Vierailija

Periaatteessa tästä lässyttämisen vähyydestä voi vetää sellaisen johtopäätöksen, että asiat ovat pikkuhiljaa alkaneet herättämään kysymyksiä.

Milloin matematiikka on kyllin valmis kertomaan luonnon vaikeimmatkin faktat. Ulkopuolisena seurannut modernia fysiikkaa, ja voi puolueettomasti sanoa, että sen kannattajat ovat täysin pihalla Gaussin, Newtonin, Arkhimedeen, etc. kavereiden järjen juoksusta.

Faktat kirjoitetaan historiaan, muu paskanjauhanta ruoditaan yhdessä lauseessa, vaikka koko modernin fysiikan kehitys. Higsin bosonia ei tulla löytämään, ja painovoimassa katseet on käännettävä takaisin Newtonin dokumentteihin. Niin se vain on, vaikka jälleen huudettiin kurkku suorana ainstainin suuruutta, kuinka teoria täsmää niin ja niin monen desimaalin tarkkuudella. Moisen tarkkuuden tutkijat saattavat olla jonkin verran ulalla konkreettisesta luonnosta, mutta niin aina on vähintään kaksi lahkoa, jonka toiset jääräpäät uskovat vain faktoihin, ja toiset sumussa vaeltajat uskovat muiden sanomiin sanomiin ja muiden sanomiin faktoihin.

Lopuksi olen melko vittumainen mies, jolla on kana kynimättä akateemisen maailman kanssa. Haistatan pitkät paskat kaikille matematiikan professoreille, ja kehotan heitä aloittamaan itsepuolustuslajien harrastamisen. Hyväksi miekan käsittelijäksi voi parhaassa tapauksessa oppia jo vuosikymmenessä, vaikka itseltä tosin kului kokonaiset 35 vuotta. Lähtökohdat kierroksella antavat loppuajan. Joku minun kaltainen hitsari joutuu lähtemään melkein alusta, jonka vuoksi aikaa kuluu paljon.

Ässät jätän hihaan, mutta miksi rotaatiossa

sin^2 x + cos^2 x = 1

Sivut

Uusimmat

Suosituimmat