Boyancy

Started by
92 comments, last by Daerax 19 years, 1 month ago
should be:
    ___________    |         /    |        /    |       /    |      /    |_____/  A |____/  B    |   /    |  /    | /    |/ distance between ___ lines is dy

As you can see, area on A ("|") is smaller than area on B ("/") Magnitude of force on B is bigger than magnitude of force on A. I'm talking about force acting on surface pieces, | or / , that is equal to pressure * surface area.
Advertisement
This is why I dont like ascii math, things are not too clear and chances of confusion by the other party are great as they are more likely to skip over much of it [me [grin]]. But Im gonna say Dmytry is right because while his method is different to mine [read, I skipped through much of it] the results are the same and the logic is similar.

As for what you said Dmytry, yes the spheres must not be allowed to intersect, they are more or less stacked inside the object. You can use spheres of larger radii for better speed with a loss in accuracy note though that your method scales better and represents better consistnecy in accuracy.

My other method however, the one I said bounding volumes might be equal or better. It works by first finding what section of the object is below the water plane and then surrounds it with one untransformed axis aligned bounding volume. I had in mind a rectangular prism or similar. Where heuristic comes in is to compensate for the lack of accuracy of volumes between the bounding volume and the submerged portion of the object. One method is to define a system where you manually say a mass with a submerged portion S can only be contained in a volume 1.x times larger. You can then scale this value later based on the ratio between the submerged part and the whole object.

Another method would be to divide all the faces of say the prism into rectangular grids of scalable size, thatis you can vary the size for accuracy or speed. You then project a ray from these sectors to collide with the object, the sum of the volume of these object is how much to reduce the bounding volume by. Actually within a tool, you can have precalculate this to almost perfect accuracy and scale in a method similar to that mentioned above. Note also that you can take advantage of the fact that on certain rotations (think through centroid about water line) that the submerged volume more or less remains the same.

Btw Dmytry I am new to 3D programming, I thought itd be easy because I knew the math already...but the inelegance of representing the world with triangles brings much problems in developing methods to approximate reality. This would have probably been much easier in a voxel based world, and probably a raytraced one.
Quote:Original post by Daerax
This is why I dont like ascii math, things are not too clear and chances of confusion by the other party are great as they are more likely to skip over much of it [me [grin]]. But Im gonna say Dmytry is right because while his method is different to mine [read, I skipped through much of it] the results are the same and the logic is similar.

As for what you said Dmytry, yes the spheres must not be allowed to intersect, they are more or less stacked inside the object. You can use spheres of larger radii for better speed with a loss in accuracy note though that your method scales better and represents better consistnecy in accuracy.

My other method however, the one I said bounding volumes might be equal or better. It works by first finding what section of the object is below the water plane and then surrounds it with one untransformed axis aligned bounding volume. I had in mind a rectangular prism or similar. Where heuristic comes in is to compensate for the lack of accuracy of volumes between the bounding volume and the submerged portion of the object. One method is to define a system where you manually say a mass with a submerged portion S can only be contained in a volume 1.x times larger. You can then scale this value later based on the ratio between the submerged part and the whole object.

Another method would be to divide all the faces of say the prism into rectangular grids of scalable size, thatis you can vary the size for accuracy or speed. You then project a ray from these sectors to collide with the object, the sum of the volume of these object is how much to reduce the bounding volume by. Actually within a tool, you can have precalculate this to almost perfect accuracy and scale in a method similar to that mentioned above. Note also that you can take advantage of the fact that on certain rotations (think through centroid about water line) that the submerged volume more or less remains the same.

Btw Dmytry I am new to 3D programming, I thought itd be easy because I knew the math already...but the inelegance of representing the world with triangles brings much problems in developing methods to approximate reality. This would have probably been much easier in a voxel based world, and probably a raytraced one.

hehe... i work with voxels and volumetrics... no, triangles aren't odd. And voxels do not really simplify life that much. Voxels is good for destructable objects and similar stuff. But not for everything.
Triangles just describle surface, and them is nearly ideal for it. To find volume contained in triangle mesh, you just apply divergence theorem to find volume from surface integral. Surface integrals scase as complexity^2 and volume integrals scale as complexity^3 ...
As about bounding, it is possible to do that with mesh too (split mesh into octree or something). As about spheres... i'm pretty sure that for any approximation with number of spheres < number of triangles, it will be less precise than interpolation of pre-calculated buoyancy. And interpolation will be lot faster...
2 Dmytry

You seem not to understand what my protest goes on protesting about.
I KNOW that the forces cancel each other because of integration over greater distances (as you showed with your last example)...
But you can't assume that because on a given level interval (two segments of choice) we have force total zero then torque total is zero. I protest on this transition not the fact it self.

In trying to prove what I said I faced an obstace (HOW TO INTEGRATE TORQUE) over a segment P1P3 as in above..

I guessed we can take the force derivative over some variable t [such that M = P1 + t*(P2-P1) ], determine the differential of force (using pressure and normal to P1P2) and cross product that vector with position of axis of rotation...
If things seem a bit ambigous; it is because i am working in 2D.

If my guess was true you can go back to my previous posts and see what I was mumbling about.

Please tolerate me
[ my blog ]
probably i still don't understand what you don't understand :-). I showed why for _horisontal_ components of forces, A and B (A and B is horisontal),
1.) A=-B
Seems you agree with 1, if you don't, please tell.

Second, I agree that fact that forces sum to zero doesn't necessarily mean that torques sum to zero. (For example, you have rod with 2 opposite forces acting on ends of the rod orthogonally to rod.)
But note that distance between points of application is parallel to directions of force (is horisontal). In such case final torque is zero.

That's why i gave proof of this:
Quote:from earlier post
Let horisontal components of forces is A,B, (result of force acting on two areas, not points. Both areas is defined to have same projection onto x=0 plane(!)) and application points of forces is M,N

A=-B (explanation in prev. post)
Let L=M-N . Note that L is horisontal, and A x L = (0,0,0) (both vectors is parallel, cross product of parallel vectors is zero)
Then, sum of torques is
A x M + B x N = A x M - A x N = A x (M - N) = A x L = (0,0,0)

edit: probably i got what might cause confusion. I actually meant not really horisontal components but components in same direction that is also horisontal (e.g. +X direction or +Z direction).

There's no "jump" from "forces total zero" to "torques total zero".

What exactly you disagree with?
"L is horisontal" ? Note that even if it isn't, it is on our dS segments (and in integration, dS --> 0) so it approaches horisontality, and torque caused approaches 0 as dS^2 and can be disregarded.(in integration)

The point is, we need to care only about vertical components of force acting on small segment dS, as torques caused by non-vertical components (x component and z-component) on pieces placed on opposite sides(as drawn in my image) cancels out.
LOL, isn't math amusing? Only with math can you spend 4 pages arguing about how objects float.

Quote:Original post by Dmytry
Quote:Original post by Daerax
This is why I dont like ascii math, things are not too clear and chances of confusion by the other party are great as they are more likely to skip over much of it [me [grin]]. But Im gonna say Dmytry is right because while his method is different to mine [read, I skipped through much of it] the results are the same and the logic is similar.

As for what you said Dmytry, yes the spheres must not be allowed to intersect, they are more or less stacked inside the object. You can use spheres of larger radii for better speed with a loss in accuracy note though that your method scales better and represents better consistnecy in accuracy.

My other method however, the one I said bounding volumes might be equal or better. It works by first finding what section of the object is below the water plane and then surrounds it with one untransformed axis aligned bounding volume. I had in mind a rectangular prism or similar. Where heuristic comes in is to compensate for the lack of accuracy of volumes between the bounding volume and the submerged portion of the object. One method is to define a system where you manually say a mass with a submerged portion S can only be contained in a volume 1.x times larger. You can then scale this value later based on the ratio between the submerged part and the whole object.

Another method would be to divide all the faces of say the prism into rectangular grids of scalable size, thatis you can vary the size for accuracy or speed. You then project a ray from these sectors to collide with the object, the sum of the volume of these object is how much to reduce the bounding volume by. Actually within a tool, you can have precalculate this to almost perfect accuracy and scale in a method similar to that mentioned above. Note also that you can take advantage of the fact that on certain rotations (think through centroid about water line) that the submerged volume more or less remains the same.

Btw Dmytry I am new to 3D programming, I thought itd be easy because I knew the math already...but the inelegance of representing the world with triangles brings much problems in developing methods to approximate reality. This would have probably been much easier in a voxel based world, and probably a raytraced one.

hehe... i work with voxels and volumetrics... no, triangles aren't odd. And voxels do not really simplify life that much. Voxels is good for destructable objects and similar stuff. But not for everything.
Triangles just describle surface, and them is nearly ideal for it. To find volume contained in triangle mesh, you just apply divergence theorem to find volume from surface integral. Surface integrals scase as complexity^2 and volume integrals scale as complexity^3 ...
As about bounding, it is possible to do that with mesh too (split mesh into octree or something). As about spheres... i'm pretty sure that for any approximation with number of spheres < number of triangles, it will be less precise than interpolation of pre-calculated buoyancy. And interpolation will be lot faster...


Really? I thought since you were operating with volumes in voxel based rendering, barring computational limitations, it would inherently be much easier to simulate 3D reality..Yeah I meant interpolate when I said scale, I dont know why I said scale..must be what I saw it as originally or something.

Quote:Original post by arithma
2 Dmytry

You seem not to understand what my protest goes on protesting about.
I KNOW that the forces cancel each other because of integration over greater distances (as you showed with your last example)...
But you can't assume that because on a given level interval (two segments of choice) we have force total zero then torque total is zero. I protest on this transition not the fact it self.

In trying to prove what I said I faced an obstace (HOW TO INTEGRATE TORQUE) over a segment P1P3 as in above..

I guessed we can take the force derivative over some variable t [such that M = P1 + t*(P2-P1) ], determine the differential of force (using pressure and normal to P1P2) and cross product that vector with position of axis of rotation...
If things seem a bit ambigous; it is because i am working in 2D.

If my guess was true you can go back to my previous posts and see what I was mumbling about.

Please tolerate me


Do you disagree with the proof, which I believe is one proving the validity in using volume methods or having trouble implementing something based on it? Because this proof does not relate to area based methods...Also, don't you think it a bit excessive to use integration based techniques in 2D? Actually, I think other approximations are required in 2D since a surface projects to a point and a volume to a surface, at this level IMHO, it wouldnt make sense to use stoke's thereom and what not.

If it is to do with the proof, I can try to explain from a physics viewpoint. Consider an infinimestial surface S, you know that the area of the surface is dxdy(i x j) = dxdyk in cartesian coordinates or in terms of the unit normal dSn, right?. Since the force felt from pressure acts [presses] on [toward or perpendicular to] the surface then the force felt on our infinimestial surface is -pdSn and the total force felt by our surface S is, ∫∫-pndS. Using our good friend's Gauss's theorem we can state the force on our infinmestial volume dV as the divergance of that on our surface. Here is the key to all this, if the forces didnt cancel out in the Z and X directions Archimedes wouldnt have been able to shout "EUREKA!!1!" in his bath tub [grin]. In my earlier post I showed how the total force per volume on a fluid is Ffb - ρVg = 0 since our mass is in equillibrium. Noting that gravity acts only in the "up" direction and that the force acting on our infinimestial volume is equivalent to the gradient of our static pressure field:

gradP dV + nρg dV = 0 or gradP dxdydz + ρgdxdydzk = 0, gradP = ρgk. The force only has meaning in the vertical dimension. This is important because from here you can go on to show that the torque T around a point r0 at point r can only have a vertical component. That is the definition of pressure..

[Edited by - Daerax on April 8, 2005 6:36:39 AM]

I did not get confused between horizontal and between x and z components as you supposed :)


[AGREEMENT]
I agree that A = -B as you defined A and B to be force acting on a surface...
[/AGREEMENT]

[DISAGREEMENT]
But since A and B are forces acting on surface we cannot use the cross of product of those forces with their positions to compute their torque effect. This is due to the fact that the cross product is computed when a FORCE & APPLICATION POINT is given. This is compared to the given we have: force & application SURFACE.
[/DISAGREEMENT]


Unless you agree with my disagreement you should not continue...
Or you can assume my disagreement is correct and argue given that as a priori


[POSSIBLE SOLUTION]
This solution, which I have mentioned earlier is still not developed entirely.
Instead of computing torque from force and surface we can compute:
----
Differential of TORQUE with respect to SURFACE
FROM
Cross product of Pressure and its Relative Point of Application(1)
----
(1)
Relative to Axis of Rotation.
(/1)

Given the DTorque as a function of DS, we can integrate with DS to compute the total torque.

Only then we can computed the total torque and compare it to zero.
[/POSSIBLE SOLUTION]

[LIMITATIONS]
I am still in high school, (graduation two month due, hooray!).. So go easy on me. If somethings seems difficult to understand I will make sure to tell you about it so that you can use lower-level (and admittedly harder to write and think about proofs)
[/LIMITATIONS]
[ my blog ]
this pieces of surface in my proof is "infinitesimal" (never spelled that correctly...). Any integral is, in fact, a limit of sum for dS-->0. Yes, forces is somehow distributed on that surface. I do not care how - i'm interested in *full* force acting on this infinitesimal piece of surface. This force creates some torque just because of where it is applied. When dS approaches limit 0 , any relative error we will get approaches 0 . Such things is pretty much basics of integration and all this stuff. To find torque, you add torques caused by small forces acting on infinitely many small pieces of surface. Same there. Just for every piece in this integration i find corresponding piece that cancel this piece out to simplify proof. It is pretty much same as finding "difference of torque" that you suggest. For infinitesimal piece of surface dS, torque difference is
position „X dS * normal * pressure
where position can be any point on that "infinitesimal" surface because it is "infinitesimal" .

If you like, i can prove that with divergence theorem alone.(not that my "normal" proof is invalid, but anyway)
Let ds is area of infinitesimal piece of surface, let it have normal N . let dS=N*ds (will make derivations shorter)
Let R is a position of that piece.
Let p(R)=pressure=-R.y*density*g
and force acting on dS is -dS*p(R)
(normal points out.)
Let Q is a center around what we compute torque.
Then, torque=
∫∫ (R-Q) ´ dS*(-p(R))
surface
[edit: there i skipped some relatively simple steps, you can look for 'em in clickster i posted below. (Actually it's bad that i skipped these steps, might leave some misunderstanding.)]
=
∫∫∫ (R-Q) ´ dV*Ñ(-p(R)) =
volume

Note that Ñ(-p(R))*dV = (0,density*g*dV,0) = - weight of infinitesimal volume dV.
And latest integral is equal to - torque caused by weight of body.
Very short. And can be made even shorter. Because is based on many other things proven.
edit: hope now nabla will look normally....
edit: WTF, now integrals is broken

[Edited by - Dmytry on April 8, 2005 3:04:21 PM]
clickster
Quote:
A quantity which yields 0 after the application of some limiting process. The understanding of infinitesimals was a major roadblock to the acceptance of calculus and its placement on a firm mathematical foundation.

This piece of surface is infinitesimal, and it's quite hard to really prove that point of application of force on infinitesimal surface doesn't really matter.

BTW, searched for buoyancy divergence theorem, and found that.
Good find Dmytry, btw the Del or nabla operator [dont know what its called in russia] doesn't work in Internet explorer. So to most people that upside down triangle is going to look like a box which would make your expressions wrong since we are not working with world vectors in 4 dimensions [grin].

It is true we are operating on a surface S = ∫∫-pdSn however as Dmytry pointed out within the expression of torque with the surface integral, on an infinimestial element of space dS, a torque is a applied about a point r with a length r-r0. That link by Dmytry should explain it all. If there is any issue with it post and Ill do my best to explain it.

Also Arithma, you know about surface integrals, volume integrals and the principles of vector analysis in high school! When I was in highschool senior year math we just took naps and pretended to be doing some simple derivatives...

This topic is closed to new replies.

Advertisement