Add Chromium-only Blender WebEngine parity work
This commit is contained in:
116
blender-5.2.0/extern/mantaflow/preprocessed/vortexsheet.cpp
vendored
Normal file
116
blender-5.2.0/extern/mantaflow/preprocessed/vortexsheet.cpp
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
|
||||
// DO NOT EDIT !
|
||||
// This file is generated using the MantaFlow preprocessor (prep generate).
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* MantaFlow fluid solver framework
|
||||
* Copyright 2011 Tobias Pfaff, Nils Thuerey
|
||||
*
|
||||
* This program is free software, distributed under the terms of the
|
||||
* Apache License, Version 2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Vortex sheets
|
||||
* (warning, the vortex methods are currently experimental, and not fully supported!)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "vortexsheet.h"
|
||||
#include "solvana.h"
|
||||
|
||||
using namespace std;
|
||||
namespace Manta {
|
||||
|
||||
// *****************************************************************************
|
||||
// VorticityChannel class members
|
||||
|
||||
// *****************************************************************************
|
||||
// VortexSheet Mesh class members
|
||||
|
||||
VortexSheetMesh::VortexSheetMesh(FluidSolver *parent) : Mesh(parent), mTexOffset(0.0f)
|
||||
{
|
||||
addTriChannel(&mVorticity);
|
||||
addNodeChannel(&mTex1);
|
||||
addNodeChannel(&mTex2);
|
||||
addNodeChannel(&mTurb);
|
||||
}
|
||||
|
||||
Mesh *VortexSheetMesh::clone()
|
||||
{
|
||||
VortexSheetMesh *nm = new VortexSheetMesh(mParent);
|
||||
*nm = *this;
|
||||
nm->setName(getName());
|
||||
return nm;
|
||||
}
|
||||
|
||||
void VortexSheetMesh::calcVorticity()
|
||||
{
|
||||
for (size_t tri = 0; tri < mTris.size(); tri++) {
|
||||
VortexSheetInfo &v = mVorticity.data[tri];
|
||||
Vec3 e0 = getEdge(tri, 0), e1 = getEdge(tri, 1), e2 = getEdge(tri, 2);
|
||||
Real area = getFaceArea(tri);
|
||||
|
||||
if (area < 1e-10) {
|
||||
v.smokeAmount = 0;
|
||||
v.vorticity = 0;
|
||||
}
|
||||
else {
|
||||
v.smokeAmount = 0;
|
||||
v.vorticity = (v.circulation[0] * e0 + v.circulation[1] * e1 + v.circulation[2] * e2) / area;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void VortexSheetMesh::calcCirculation()
|
||||
{
|
||||
for (size_t tri = 0; tri < mTris.size(); tri++) {
|
||||
VortexSheetInfo &v = mVorticity.data[tri];
|
||||
Vec3 e0 = getEdge(tri, 0), e1 = getEdge(tri, 1), e2 = getEdge(tri, 2);
|
||||
Real area = getFaceArea(tri);
|
||||
|
||||
if (area < 1e-10 || normSquare(v.vorticity) < 1e-10) {
|
||||
v.circulation = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
float cx, cy, cz;
|
||||
SolveOverconstraint34(e0.x,
|
||||
e0.y,
|
||||
e0.z,
|
||||
e1.x,
|
||||
e1.y,
|
||||
e1.z,
|
||||
e2.x,
|
||||
e2.y,
|
||||
e2.z,
|
||||
v.vorticity.x,
|
||||
v.vorticity.y,
|
||||
v.vorticity.z,
|
||||
cx,
|
||||
cy,
|
||||
cz);
|
||||
v.circulation = Vec3(cx, cy, cz) * area;
|
||||
}
|
||||
}
|
||||
|
||||
void VortexSheetMesh::resetTex1()
|
||||
{
|
||||
for (size_t i = 0; i < mNodes.size(); i++)
|
||||
mTex1.data[i] = mNodes[i].pos + mTexOffset;
|
||||
}
|
||||
|
||||
void VortexSheetMesh::resetTex2()
|
||||
{
|
||||
for (size_t i = 0; i < mNodes.size(); i++)
|
||||
mTex2.data[i] = mNodes[i].pos + mTexOffset;
|
||||
}
|
||||
|
||||
void VortexSheetMesh::reinitTexCoords()
|
||||
{
|
||||
resetTex1();
|
||||
resetTex2();
|
||||
}
|
||||
|
||||
}; // namespace Manta
|
||||
Reference in New Issue
Block a user