Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • e31fa09
  • /
  • src
  • /
  • ComputeInertial.cpp
Raw File Download

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge
swh:1:cnt:14bafc9cb5f463f2a777216d3dc829cc330c79be
directory badge
swh:1:dir:a182c55e93ceee8e3a35d88e8da2daa576d94fc5

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
ComputeInertial.cpp
#include <cmath>
void ComputeInertial(
   const double *xa, // [input 3x1] World position of vertex A
   const double *xb, // [input 3x1] World position of vertex B
   const double *xc, // [input 3x1] World position of vertex C
   const double *Xa, // [input 2x1] Material position of vertex A
   const double *Xb, // [input 2x1] Material position of vertex B
   const double *Xc, // [input 2x1] Material position of vertex C
   const double *g,  // [input 3x1] 3D gravity vector
   double rho,       // [input 1x1] Density (mass per area)
   double *W,        // [output 1x1] Gravitational potential energy
   double *f,        // [output 9x1] Gravity force vector
   double *M)        // [output 9x9] Inertia matrix
{
double xax = xa[0];
double xay = xa[1];
double xaz = xa[2];
double xbx = xb[0];
double xby = xb[1];
double xbz = xb[2];
double xcx = xc[0];
double xcy = xc[1];
double xcz = xc[2];
double Xax = Xa[0];
double Xay = Xa[1];
double Xbx = Xb[0];
double Xby = Xb[1];
double Xcx = Xc[0];
double Xcy = Xc[1];
double gx = g[0];
double gy = g[1];
double gz = g[2];
double t8 = rho * (Xax * Xby - Xax * Xcy - Xbx * Xay + Xcx * Xay + Xbx * Xcy - Xcx * Xby);
double W00 = -t8 * (gx * (xbx - xcx) / 6 + gy * (xby - xcy) / 6 + gz * (xbz - xcz) / 6 + gx * (xax - xcx) / 6 + gy * (xay - xcy) / 6 + gz * (xaz - xcz) / 6 + gx * xcx / 2 + gy * xcy / 2 + gz * xcz / 2);
double f01 = t8 * gx / 6;
double f02 = t8 * gy / 6;
double f03 = t8 * gz / 6;
double f04 = f01;
double f05 = f02;
double f06 = f03;
double f07 = f04;
double f08 = f05;
double f09 = f06;
double M0101 = t8 / 12;
double M0102 = 0;
double M0103 = 0;
double M0104 = t8 / 24;
double M0105 = 0;
double M0106 = 0;
double M0107 = M0104;
double M0108 = 0;
double M0109 = 0;
double M0201 = 0;
double M0202 = M0101;
double M0203 = 0;
double M0204 = 0;
double M0205 = M0107;
double M0206 = 0;
double M0207 = 0;
double M0208 = M0205;
double M0209 = 0;
double M0301 = 0;
double M0302 = 0;
double M0303 = M0202;
double M0304 = 0;
double M0305 = 0;
double M0306 = M0208;
double M0307 = 0;
double M0308 = 0;
double M0309 = M0306;
double M0401 = M0309;
double M0402 = 0;
double M0403 = 0;
double M0404 = M0303;
double M0405 = 0;
double M0406 = 0;
double M0407 = M0401;
double M0408 = 0;
double M0409 = 0;
double M0501 = 0;
double M0502 = M0407;
double M0503 = 0;
double M0504 = 0;
double M0505 = M0404;
double M0506 = 0;
double M0507 = 0;
double M0508 = M0502;
double M0509 = 0;
double M0601 = 0;
double M0602 = 0;
double M0603 = M0508;
double M0604 = 0;
double M0605 = 0;
double M0606 = M0505;
double M0607 = 0;
double M0608 = 0;
double M0609 = M0603;
double M0701 = M0609;
double M0702 = 0;
double M0703 = 0;
double M0704 = M0701;
double M0705 = 0;
double M0706 = 0;
double M0707 = M0606;
double M0708 = 0;
double M0709 = 0;
double M0801 = 0;
double M0802 = M0704;
double M0803 = 0;
double M0804 = 0;
double M0805 = M0802;
double M0806 = 0;
double M0807 = 0;
double M0808 = M0707;
double M0809 = 0;
double M0901 = 0;
double M0902 = 0;
double M0903 = M0805;
double M0904 = 0;
double M0905 = 0;
double M0906 = M0903;
double M0907 = 0;
double M0908 = 0;
double M0909 = M0808;
W[0]=W00;
f[0]=f01; f[1]=f02; f[2]=f03; f[3]=f04; f[4]=f05; f[5]=f06; f[6]=f07; f[7]=f08; f[8]=f09; 
M[ 0*9+ 0]=M0101; M[ 0*9+ 1]=M0102; M[ 0*9+ 2]=M0103; M[ 0*9+ 3]=M0104; M[ 0*9+ 4]=M0105; M[ 0*9+ 5]=M0106; M[ 0*9+ 6]=M0107; M[ 0*9+ 7]=M0108; M[ 0*9+ 8]=M0109; 
M[ 1*9+ 0]=M0201; M[ 1*9+ 1]=M0202; M[ 1*9+ 2]=M0203; M[ 1*9+ 3]=M0204; M[ 1*9+ 4]=M0205; M[ 1*9+ 5]=M0206; M[ 1*9+ 6]=M0207; M[ 1*9+ 7]=M0208; M[ 1*9+ 8]=M0209; 
M[ 2*9+ 0]=M0301; M[ 2*9+ 1]=M0302; M[ 2*9+ 2]=M0303; M[ 2*9+ 3]=M0304; M[ 2*9+ 4]=M0305; M[ 2*9+ 5]=M0306; M[ 2*9+ 6]=M0307; M[ 2*9+ 7]=M0308; M[ 2*9+ 8]=M0309; 
M[ 3*9+ 0]=M0401; M[ 3*9+ 1]=M0402; M[ 3*9+ 2]=M0403; M[ 3*9+ 3]=M0404; M[ 3*9+ 4]=M0405; M[ 3*9+ 5]=M0406; M[ 3*9+ 6]=M0407; M[ 3*9+ 7]=M0408; M[ 3*9+ 8]=M0409; 
M[ 4*9+ 0]=M0501; M[ 4*9+ 1]=M0502; M[ 4*9+ 2]=M0503; M[ 4*9+ 3]=M0504; M[ 4*9+ 4]=M0505; M[ 4*9+ 5]=M0506; M[ 4*9+ 6]=M0507; M[ 4*9+ 7]=M0508; M[ 4*9+ 8]=M0509; 
M[ 5*9+ 0]=M0601; M[ 5*9+ 1]=M0602; M[ 5*9+ 2]=M0603; M[ 5*9+ 3]=M0604; M[ 5*9+ 4]=M0605; M[ 5*9+ 5]=M0606; M[ 5*9+ 6]=M0607; M[ 5*9+ 7]=M0608; M[ 5*9+ 8]=M0609; 
M[ 6*9+ 0]=M0701; M[ 6*9+ 1]=M0702; M[ 6*9+ 2]=M0703; M[ 6*9+ 3]=M0704; M[ 6*9+ 4]=M0705; M[ 6*9+ 5]=M0706; M[ 6*9+ 6]=M0707; M[ 6*9+ 7]=M0708; M[ 6*9+ 8]=M0709; 
M[ 7*9+ 0]=M0801; M[ 7*9+ 1]=M0802; M[ 7*9+ 2]=M0803; M[ 7*9+ 3]=M0804; M[ 7*9+ 4]=M0805; M[ 7*9+ 5]=M0806; M[ 7*9+ 6]=M0807; M[ 7*9+ 7]=M0808; M[ 7*9+ 8]=M0809; 
M[ 8*9+ 0]=M0901; M[ 8*9+ 1]=M0902; M[ 8*9+ 2]=M0903; M[ 8*9+ 3]=M0904; M[ 8*9+ 4]=M0905; M[ 8*9+ 5]=M0906; M[ 8*9+ 6]=M0907; M[ 8*9+ 7]=M0908; M[ 8*9+ 8]=M0909; 
}

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API