24 int heightStickWidth,
int heightStickLength,
const void* heightfieldData,
29 initialize(heightStickWidth, heightStickLength, heightfieldData,
30 heightScale, minHeight, maxHeight, upAxis, hdt,
45 btScalar heightScale = maxHeight / 65535;
47 initialize(heightStickWidth, heightStickLength, heightfieldData,
48 heightScale, minHeight, maxHeight, upAxis, hdt,
56 int heightStickWidth,
int heightStickLength,
const void* heightfieldData,
62 btAssert(heightStickWidth > 1 &&
"bad width");
63 btAssert(heightStickLength > 1 &&
"bad length");
64 btAssert(heightfieldData &&
"null heightfield data");
66 btAssert(minHeight <= maxHeight &&
"bad min/max height");
67 btAssert(upAxis >= 0 && upAxis < 3 &&
68 "bad upAxis--should be in range [0,2]");
70 "Bad height data type enum");
74 m_heightStickWidth = heightStickWidth;
75 m_heightStickLength = heightStickLength;
76 m_minHeight = minHeight;
77 m_maxHeight = maxHeight;
78 m_width = (
btScalar) (heightStickWidth - 1);
79 m_length = (
btScalar) (heightStickLength - 1);
80 m_heightScale = heightScale;
81 m_heightfieldDataUnknown = heightfieldData;
82 m_heightDataType = hdt;
83 m_flipQuadEdges = flipQuadEdges;
84 m_useDiamondSubdivision =
false;
85 m_useZigzagSubdivision =
false;
94 m_localAabbMin.setValue(m_minHeight, 0, 0);
95 m_localAabbMax.setValue(m_maxHeight, m_width, m_length);
100 m_localAabbMin.setValue(0, m_minHeight, 0);
101 m_localAabbMax.setValue(m_width, m_maxHeight, m_length);
106 m_localAabbMin.setValue(0, 0, m_minHeight);
107 m_localAabbMax.setValue(m_width, m_length, m_maxHeight);
118 m_localOrigin =
btScalar(0.5) * (m_localAabbMin + m_localAabbMax);
139 btVector3 extent = halfExtents.
dot3(abs_b[0], abs_b[1], abs_b[2]);
142 aabbMin = center - extent;
143 aabbMax = center + extent;
246 return (
int) (x - 0.5);
248 return (
int) (x + 0.5);
294 int quantizedAabbMin[3];
295 int quantizedAabbMax[3];
301 for (
int i = 0; i < 3; ++i) {
302 quantizedAabbMin[i]--;
303 quantizedAabbMax[i]++;
315 if (quantizedAabbMin[1]>startX)
316 startX = quantizedAabbMin[1];
317 if (quantizedAabbMax[1]<endX)
318 endX = quantizedAabbMax[1];
319 if (quantizedAabbMin[2]>startJ)
320 startJ = quantizedAabbMin[2];
321 if (quantizedAabbMax[2]<endJ)
322 endJ = quantizedAabbMax[2];
327 if (quantizedAabbMin[0]>startX)
328 startX = quantizedAabbMin[0];
329 if (quantizedAabbMax[0]<endX)
330 endX = quantizedAabbMax[0];
331 if (quantizedAabbMin[2]>startJ)
332 startJ = quantizedAabbMin[2];
333 if (quantizedAabbMax[2]<endJ)
334 endJ = quantizedAabbMax[2];
339 if (quantizedAabbMin[0]>startX)
340 startX = quantizedAabbMin[0];
341 if (quantizedAabbMax[0]<endX)
342 endX = quantizedAabbMax[0];
343 if (quantizedAabbMin[1]>startJ)
344 startJ = quantizedAabbMin[1];
345 if (quantizedAabbMax[1]<endJ)
346 endJ = quantizedAabbMax[1];
359 for(
int j=startJ; j<endJ; j++)
361 for(
int x=startX; x<endX; x++)
363 btVector3 vertices[3];