maul.h

来自「细胞自动机的一个源代码」· C头文件 代码 · 共 55 行

H
55
字号
#ifndef MAUL_MATH_H#define MAUL_MATH_H#include <stdio.h>#include <math.h>#define mauldot3(x, y) ((x[0]*y[0])+(x[1]*y[1])+(x[2]*y[2]))#define mauldot2(x, y) ((x[0]*y[0])+(x[1]*y[1]))#define mauladd3(x, y, o) o[0]=x[0]+y[0]; o[1]=x[1]+y[1]; o[2]=x[2]+y[2]#define mauladd2(x, y, o) o[0]=x[0]+y[0]; o[1]=x[1]+y[1]#define maulsub3(x, y, o) o[0]=x[0]-y[0]; o[1]=x[1]-y[1]; o[2]=x[2]-y[2]#define maulsub2(x, y, o) o[0]=x[0]-y[0]; o[1]=x[1]-y[1]/* do NOT do something like maulcross3(x, y, x)...will not work! */#define maulcross3(x, y, o) o[0]=((x[1]*y[2])-(x[2]*y[1])); \                            o[1]=((x[2]*y[0])-(x[0]*y[2])); \                            o[2]=((x[0]*y[1])-(x[1]*y[0]))#define maullen3(x) sqrt((x[0]*x[0])+(x[1]*x[1])+(x[2]*x[2]))#define maullensq3(x) ((x[0]*x[0])+(x[1]*x[1])+(x[2]*x[2]))#define maullen3(x) sqrt((x[0]*x[0])+(x[1]*x[1]))#define maullensq3(x) ((x[0]*x[0])+(x[1]*x[1]))#define maulmul3(x, y, o) o[0]=x[0]*y[0]; o[1]=x[1]*y[1]; o[2]=x[2]*y[2]#define maulmul3c(x, c, o) o[0]=x[0]*c; o[1]=x[1]*c; o[2]=x[2]*c#define mauldiv3(x, y, o) o[0]=x[0]/y[0]; o[1]=x[1]/y[1]; o[2]=x[2]/y[2]#define mauldiv3c(x, y, o) o[0]=x[0]/c; o[1]=x[1]/c; o[2]=x[2]/cstruct line_d {  double p[3], v[3], t;};typedef struct line_d line;struct plane_d {  double n[3], d;};typedef struct plane_d line;double *maulnorm3d(double *a);plane *maulpnp(double *n, double *p, plane *a);double *maulppl(double *p, double *q, plane *a, double *o);int maulpit(double *t0, double *t1, double *t1, double *p);int maultti(double *t0, double *t1, double *t2,	    double *u0, double *u1, double *u2);int maulssi(double *p0, double r0, double *p1, double r1);#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?