Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // my sweet sixteen...
- //~~~~~ INCLUSIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`',
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- #include<time.h>
- //definitions
- #define PI 3.1415926536
- #define INT_MAX 2147483647
- #define GRAV 9.81
- //local inclusions
- #include"colorDefs.h"
- #include"structurals.h"
- #include"perspective.h"
- //~~~~~ MAIN PROGRAM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`',
- // Hexanion
- //```````````````````````````````````````````````````````````````````````````````````
- int main() {
- //random seed
- randSeed();
- //random hexanions
- double hexU[16]; makeUnitHex(hexU);
- double hexF[16]; foldUnitHex(hexF);
- //kill
- return 0;
- }
- //~~~~~ FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`',
- #include"statDefs.h" //statisticl algorithms
- #include"arrayDefs.h" //array methods
- #include"determinant.h" //classic determinant
- #include"linearAlgebra.h" //linear algebraic methods
- #include"vectQuat.h" //vectors and quats
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~ ~ ~
- // ^^^ ABOVE IS OFTEN BLOATED AS CODE IS COPIED UNTIL PURSUED IN ACTIVE MARKET ^^^
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`',
- //random octonion
- void randOct(double oIn[]) {
- int z;
- for (z = 0; z < 8; z++) {
- oIn[z] = pRand();
- }
- }
- //print octonion
- void printOct(double oIn[]) {
- int z;
- for (z = 0; z < 8; z++) {
- printf("%f\n",oIn[z]);
- }
- printf("\n");
- }
- //random hexanion
- void makeRandHex(double o1[],double o2[],double hex[]) {
- int z;
- for (z = 0; z < 8; z++) {
- int q = z + 8;
- hex[z] = o1[z];
- hex[q] = o2[z];
- }
- }
- //folded hexanion
- void makeFoldHex(double o1[],double o2[],double hex[]) {
- hex[0] = sqrt(o1[0]*o2[0]);
- int z;
- for (z = 1; z < 8; z++) {
- int q = z + 7;
- hex[z] = o1[z];
- hex[q] = o2[z];
- }
- double derp = pow(o1[0],2) + pow(o2[0],2);
- hex[15] = sqrt(derp/2);
- }
- //print hexanion
- void printHex(double hex[]) {
- int z;
- for (z = 0; z < 16; z++) {
- printf("%f\n",hex[z]);
- }
- printf("\n");
- }
- //compute radius
- void computeRad(double hex[],double *rad) {
- double hold = 0.0;
- int z;
- for (z = 0; z < 16; z++) {
- hold += pow(hex[z],2);
- }
- *rad = sqrt(hold);
- }
- //unit octonion
- void makeUnitOct(double oIn[]) {
- double Raxis[7];
- int z;
- for (z = 0; z < 7; z++) {
- Raxis[z] = pRand()-.5;
- }
- double Rad = 0.0;
- for (z = 0; z < 7; z++) {
- Rad += pow(Raxis[z],2);
- }
- Rad = sqrt(Rad);
- for (z = 0; z < 7; z++) {
- Raxis[z] = Raxis[z]/Rad;
- }
- double Rangle = (pRand()*2 - 1)*PI;
- double theta = Rangle/2;
- oIn[0] = cos(theta);
- for (z = 0; z < 7; z++) {
- oIn[z+1] = sin(theta)*Raxis[z];
- }
- for (z = 0; z < 8; z++) {
- printf("%f\n",oIn[z]);
- }
- Rad = 0.0;
- for (z = 0; z < 8; z++) {
- Rad += pow(oIn[z],2);
- }
- printf("Radius: %f\n",Rad);
- }
- //unit octonion
- void makeUnitHex(double hIn[]) {
- printf("Random Unit Hex\n");
- double Raxis[15];
- int z;
- for (z = 0; z < 15; z++) {
- Raxis[z] = pRand()-.5;
- }
- double Rad = 0.0;
- for (z = 0; z < 15; z++) {
- Rad += pow(Raxis[z],2);
- }
- Rad = sqrt(Rad);
- for (z = 0; z < 15; z++) {
- Raxis[z] = Raxis[z]/Rad;
- }
- double Rangle = (pRand()*2 - 1)*PI;
- double theta = Rangle/2;
- hIn[0] = cos(theta);
- for (z = 0; z < 15; z++) {
- hIn[z+1] = sin(theta)*Raxis[z];
- }
- for (z = 0; z < 16; z++) {
- printf("%f\n",hIn[z]);
- }
- Rad = 0.0;
- for (z = 0; z < 16; z++) {
- Rad += pow(hIn[z],2);
- }
- printf("Radius: %f\n\n",Rad);
- }
- //folded hexanion
- void foldUnitHex(double hIn[]) {
- double Raxis1[7];
- double Raxis2[7];
- int z;
- for (z = 0; z < 7; z++) {
- Raxis1[z] = pRand()-.5;
- Raxis2[z] = pRand()-.5;
- }
- double Rad1 = 0.0;
- double Rad2 = 0.0;
- for (z = 0; z < 7; z++) {
- Rad1 += pow(Raxis1[z],2);
- Rad2 += pow(Raxis2[z],2);
- }
- Rad1 = sqrt(Rad1);
- Rad2 = sqrt(Rad2);
- for (z = 0; z < 7; z++) {
- Raxis1[z] = Raxis1[z]/Rad1;
- Raxis2[z] = Raxis2[z]/Rad2;
- }
- double q1 = 1.0;
- double q2 = 1.0;
- for (z = 0; z < 7; z++) {
- q1 = q1*pow(Raxis1[z],2);
- q2 = q2*pow(Raxis2[z],2);
- }
- double Pres = 1.0/14.0;
- q1 = pow(q1,Pres);
- q2 = pow(q2,Pres);
- double g = sqrt(q1*q2);
- double Faxis[15];
- for (z = 0; z < 7; z++) {
- Faxis[z] = Raxis1[z];
- Faxis[z+7] = Raxis2[z];
- }
- Faxis[14] = g;
- double Rad = 0.0;
- for (z = 0; z < 15; z++) {
- Rad += pow(Faxis[z],2);
- }
- Rad = sqrt(Rad);
- for (z = 0; z < 15; z++) {
- Faxis[z] = Faxis[z]/Rad;
- }
- double Rangle1 = (pRand()*2 - 1)*PI;
- double Rangle2 = (pRand()*2 - 1)*PI;
- if(Rangle1*Rangle2 < 0.0) {printf("~");}
- //make octonion printout
- printf("Unit Octonion Pair\n");
- double octA[8]; octA[0] = cos(Rangle1/2);
- double octB[8]; octB[0] = cos(Rangle2/2);
- for (z = 0; z < 7; z++) {
- octA[z+1] = sin(Rangle1/2)*Raxis1[z];
- octB[z+1] = sin(Rangle2/2)*Raxis2[z];
- }
- for (z = 0; z < 8; z++) {
- printf("%f\t%f\n",octA[z],octB[z]);
- }
- printf("\n");
- double Rsq1 = pow(Rangle1,2);
- double Rsq2 = pow(Rangle2,2);
- double hold1 = Rsq1*Rsq2;
- double hold2 = sqrt(hold1);
- double Rangle = sqrt(hold2);
- double theta = Rangle/2;
- hIn[0] = cos(theta);
- printf("Folded Unit Hex\n");
- for (z = 0; z < 15; z++) {
- hIn[z+1] = sin(theta)*Faxis[z];
- }
- for (z = 0; z < 16; z++) {
- printf("%f\n",hIn[z]);
- }
- Rad = 0.0;
- for (z = 0; z < 16; z++) {
- Rad += pow(hIn[z],2);
- }
- printf("Radius: %f\n",Rad);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement