dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

C++ | neliels(i) jautājums(i)
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
apofiss
Indago dalībnieks
Indago dalībnieks


Joined: 06 Feb 2005
Posts: 148
Location: Latvija

PostPosted: Wed Mar 30, 2005 4:03 pm    Post subject: C++ | neliels(i) jautājums(i)

Ta nu tā (sorry ja jautājums liekas tups);

------------------------------------------------------------
unsigned short int -> 2 bytes -> 0 to 65,535
short int -> 2 bytes -> -32,768 to 32,767
------------------------------------------------------------

Jautājums. Vai vienīgā atšķirība lietojot unsigned ir izmērs un vērtība?
Back to top
View user's profile Send e-mail
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Wed Mar 30, 2005 4:12 pm    Post subject:

Nu vieniigaa starpiibaa arii ir taa, ko tu esi jau paraadiijis. Parastam, mainiigam pirmais bits apziimee +/-, bet unsigned vienmeer ir pozitiivs, liidz ar to pirmais bits ljauj saglabaat lielaaku pozitiivu veertiibu. Mainiigaa izmeers nemainaas - 2 baiti; iespeejamo dazaado veertiibu skaits paliek tas pats 2^16=65536; bet mainiigajaa saglabaataa informaacija tiek savaadaak interpreteeta.
_________________
Back to top
View user's profile Send e-mail
apofiss
Indago dalībnieks
Indago dalībnieks


Joined: 06 Feb 2005
Posts: 148
Location: Latvija

PostPosted: Wed Mar 30, 2005 4:26 pm    Post subject:

Ok, thanks GiGa!
Back to top
View user's profile Send e-mail
apofiss
Indago dalībnieks
Indago dalībnieks


Joined: 06 Feb 2005
Posts: 148
Location: Latvija

PostPosted: Thu Mar 31, 2005 4:23 pm    Post subject:

Ai nekas. (sorry par tukšu postu)...pats tikko sapratu kļūdu. o ___ O
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Mar 31, 2005 5:38 pm    Post subject:

Vispār jau eksistē iespēja izdzēst savu postu...
Back to top
View user's profile Send e-mail
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 15, 2005 7:20 pm    Post subject:

Man arī tāds sīks jautājumiņš.....

Man likas, ka šitais nav pareizs, un gribētos zināt kā būtu pareizi!!!
Code:
   cMatrix4x4 operator +(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]+=M[i];
      }
      return m;
   }
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 15, 2005 9:06 pm    Post subject:

Kas ir m? un kas ir cMatrix4x4? Mums jāzīlē?
Back to top
View user's profile Send e-mail
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 15, 2005 9:15 pm    Post subject:

Embarassed Embarassed Embarassed
Aizmirsu, ka jūs to neziniet Laughing

cMatrix4x4 ir float m[16]

nu precīzāk cMatrix4x4 ir 4*4 matrica un m[16] ir floati, kuros ir šī matrica... A es vsp esmu pareizi panjemis apzimejumus Question Question
Nevaidzeeja defineet visus laukus???? Nu a11 a12 a13 utt
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 15, 2005 9:19 pm    Post subject:

Masīvu pēc references nav vērts padot šajā gadījumā. Kā nekā masīvs iekš C/C++ ir pointeris pēc būtības. Citādi tu padod pointeri uz pointeri:
Code:
  cMatrix4x4 operator +(const cMatrix4x4 M){
      for(int i=0; i<16; i++){
         m[i]+=M[i];
      }
      return m;
   }

Un kas tieši šajā kodā nestrādā? (vai nekompilējas?)
Back to top
View user's profile Send e-mail
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 15, 2005 9:21 pm    Post subject:

Itkaa viss straadaa, bet kaut kaa nesmuki izstaa, ka gan += gan + ir vienaadi Confused
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 15, 2005 9:46 pm    Post subject:

ghe.. Nu ja jau viss strāda. :) Un kas ir nesmuki? Mums atkal jāzīlē? Kā lai mēs zinām kā tev tas izskatās. Vai nu prasi konkrētākus jautājumus, vai arī rādi visu kodu.
Back to top
View user's profile Send e-mail
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 15, 2005 10:01 pm    Post subject: operatoru paarlaadeeshana & matricas

nu taksh kods prieksh
Code:
 cMatrix4x4 +=(cMatrix4x4 M)
ir vienaads ar
Code:
 cMatrix4x4 +(cMatrix4x4 M)


Parasti, jau "+"atshkiras no "+="

P.S. Viss Kods ir diezgan garsh, bet visas operatoru paarlaadeeshanas ir te: ( ar taam man var buut daudz kluudu, viss paareejais teoreetiski straadaa (praktiski veel nevaru paarbaudiit))
Code:

class cMatrix4x4{
private:
   float m[16];
public:
   cMatrix4x4(){
      for(int i=0;i<16;i++){
         m[i]=0;
      }
   }
   cMatrix4x4 operator =(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]=M[i];
      }
      return m;
   }

   bool operator ==(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         if(m[i]!=M[i])return false;
      }
      return true;
   }

   bool operator !=(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         if(m[i]==M[i])return false;
      }
      return true;
   }

   cMatrix4x4 operator +(float k){
      for(int i=0;i<16;i++){
         m[i]+=k;
      }
      return m;
   }
   cMatrix4x4 operator +=(float k){
      for(int i=0;i<16;i++){
         m[i]+=k;
      }
      return m;
   }

   cMatrix4x4 operator +(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]+=M[i];
      }
      return m;
   }

   cMatrix4x4 operator +=(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]+=M[i];
      }
      return m;
   }

   cMatrix4x4 operator +=(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]+=M[i];
      }
      return m;
   }

   
   cMatrix4x4 operator -(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]-=M[i];
      }
      return m;
   }
   cMatrix4x4 operator *(float a){
      for(int i=0;i<16;i++){
         m[i]*=a;
      }
      return m;
   }
   cMatrix4x4 operator *(cMatrix4x4 &M){
      float Rez[16];

      Rez[0] = m[0]*M[0]+m[1]*M[4]+m[2]*M[8]+m[3]*M[12];
      Rez[1] = m[0]*M[1]+m[1]*M[5]+m[2]*M[9]+m[3]*M[13];
      Rez[2] = m[0]*M[2]+m[1]*M[6]+m[2]*M[10]+m[3]*M[14];
      Rez[3] = m[0]*M[3]+m[1]*M[7]+m[2]*M[11]+m[3]*M[15];
      Rez[4] = m[4]*M[0]+m[5]*M[4]+m[6]*M[8]+m[7]*M[12];
      Rez[5] = m[4]*M[1]+m[5]*M[5]+m[6]*M[9]+m[7]*M[13];
      Rez[6] = m[4]*M[2]+m[5]*M[6]+m[6]*M[10]+m[7]*M[14];
      Rez[7] = m[4]*M[3]+m[5]*M[7]+m[6]*M[11]+m[7]*M[15];
      Rez[8] = m[8]*M[0]+m[9]*M[4]+m[10]*M[8]+m[11]*M[12];
      Rez[9] = m[8]*M[1]+m[9]*M[5]+m[10]*M[9]+m[11]*M[13];
      Rez[10] = m[8]*M[2]+m[9]*M[6]+m[10]*M[10]+m[11]*M[14];
      Rez[11] = m[8]*M[3]+m[9]*M[7]+m[10]*M[11]+m[11]*M[15];
      Rez[12] = m[12]*M[0]+m[13]*M[4]+m[14]*M[8]+m[15]*M[12];
      Rez[13] = m[12]*M[1]+m[13]*M[5]+m[14]*M[9]+m[15]*M[13];
      Rez[14] = m[12]*M[2]+m[13]*M[6]+m[14]*M[10]+m[15]*M[14];
      Rez[15] = m[12]*M[3]+m[13]*M[7]+m[14]*M[11]+m[15]*M[15];

      return Rez;
}
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 15, 2005 10:07 pm    Post subject:

Ahā. Tu tur iepriekš samelojies.
Tu teici ka cMatrix4x4 ir float[16].
A nē cMatrix4x4 ir class!
un tev priekš šīs class nav definēts operators []
Tāpēc pielietojot to, piemēra, šai vietā:
Code:

   cMatrix4x4 operator +(cMatrix4x4 &M){
      for(int i=0;i<16;i++){
         m[i]+=M[i];
      }
      return m;
   }

Tu iegūsti galīgi ne to ko vajag. Tev vispār tāds kods kompilējas? Manuprāt, tam nemaz nevajadzētu kompilēties!
Pie tam, šai pašai fjai: funkcijas rezultāts ir cMatrix4x4, bet return m atgriež float[16]. Tev nešķiet, ka tie ir divi dažādi tipi?

P.S. iemācies lietot const keywordu. C++ valodā tam ir liela nozīme.
Back to top
View user's profile Send e-mail
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 15, 2005 10:25 pm    Post subject:

Nu vispaar jaa, nebiju aizdomaajies.... Man gan likaas, ka vinsh pats sapratiis, jo ir tikai viens mainiigais, bet laikam jau nee......

Aaa, pie vektoriem bija atgrieshana noraadot katru (x,y,z) bet sheit, taa darbiiba taksh nav sakariiga (16 skaitlji kaa nekaa)

Koods man nekompileejas, bet tur ir daudz vainu (ne tikai shiis)
hmm.... vai Tu luudzu nevareetu sho te "+" paraadiit kaa jaaraksta buutu pareizi, (ja vispaar te var kaut ko izdariit), un tikai ja tas nav baigais darbs...


P.S. Centiishos =)
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 15, 2005 10:46 pm    Post subject:

Nezinu kā ir pareizi, bet es taisītu šādi (kodu rakstu tepatās, testējis neesu, tā ka ļoti iespējams, ka nav kautkas labi, bet nu galvenais ir ideja :)
Code:
class Matrix {
private:
  float m[16];
public:
  Matrix () {
    for (int i=0; i<16; i++) m[i]=0;
  }
  Matrix (const Matrix &M) {
    for (int i=0; i<16; i++) m[i]=M.m[i];
  }
 
  // +=
  Matrix& operator += (const Matrix &M) {
    for (int i=0; i<16; i++) m[i]+=M.m[i];
    return *this;
  }
};

inline Matrix operator + (const Matrix &M1, const Matrix &M2) {
  Matrix M(M1);
  M+=M2;
  return M;
}


P.S. Nezinu gan kam tev + operators, bet lai jau. Vienkārši 3d ģeometrijā tādu diez vai vajadzēs. Tur dāaudz biežāk vajadzēs * operatoru.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group