NEURON
rxd_llgramarea.cpp
Go to the documentation of this file.
1 #include <math.h>
2 
3 #include "nrn_export.hpp"
4 
5 extern "C" NRN_EXPORT double llgramarea(double* p0, double* p1, double* p2) {
6  /* setup the vectors */
7  double a[] = {p0[0] - p1[0], p0[1] - p1[1], p0[2] - p1[2]};
8  double b[] = {p0[0] - p2[0], p0[1] - p2[1], p0[2] - p2[2]};
9 
10  /* take the cross-product */
11  double cpx = a[1] * b[2] - a[2] * b[1];
12  double cpy = a[2] * b[0] - a[0] * b[2];
13  double cpz = a[0] * b[1] - a[1] * b[0];
14  return sqrt(cpx * cpx + cpy * cpy + cpz * cpz);
15 }
16 
17 
18 extern "C" NRN_EXPORT double llpipedfromoriginvolume(double* p0, double* p1, double* p2) {
19  /* take the cross-product */
20  double cpx = p1[1] * p2[2] - p1[2] * p2[1];
21  double cpy = p1[2] * p2[0] - p1[0] * p2[2];
22  double cpz = p1[0] * p2[1] - p1[1] * p2[0];
23 
24  /* vol = p0.dot(numpy.cross(p1, p2)) / 6. */
25  return p0[0] * cpx + p0[1] * cpy + p0[2] * cpz;
26 }
sqrt
Definition: extdef.h:3
#define NRN_EXPORT
Definition: nrn_export.hpp:6
NRN_EXPORT double llpipedfromoriginvolume(double *p0, double *p1, double *p2)
NRN_EXPORT double llgramarea(double *p0, double *p1, double *p2)