Comments (5)
I agree we could have separate coefficient of friction for sliding and rolling. The current code is based around:
https://billiards.colostate.edu/physics_articles/Han_paper.pdf
In that paper the rolling friction is related to the sliding friction by equation 8
That is in the code as:
export const Mxy = (7 / (5 * Math.sqrt(2))) * mu * m * g * 0.25
When I tried this without the 0.25 scaling factor the simulation did not feel realistic. I am open to having direct constant for Mxy if you know suitable values.
Diagrams are useful in choosing the values:
http://tailuge.github.io/billiards/dist/diagrams.html
Also from https://billiards.colostate.edu/physics_articles/Mathavan_IMechE_2010.pdf
"High-speed-camera-based measurements were used,
in a previous work by the present authors, to determine
the sliding coefficient of friction between a snooker
ball and the table-felt; the sliding coefficient of friction μs was found to be between 0.178 and 0.245 [16].
Marlow [12] suggests a value of 0.2 for the game of
pool. Since the present authors have performed extensive measurements of the various parameters related
to snooker [16], from here onwards the numerical values found in snooker are used for the calculations.μs is
assumed to be 0.212, as an average value"
from billiards.
OK, thanks a lot!
I have already read the paper , and derived the formula about velocity and angle-velocity myself, but I just ignore the 0.25
Now I have an other question,
In physics.ts, line 9 - line 11
export function surfaceVelocityFull(v, w) {
return v.clone().add(upCross(w))
}
I think it should be
export function surfaceVelocityFull(v, w) {
return v.clone().add(upCross(w) * R) // Because R = 0.5 instead of 1.0
}
from billiards.
I think you are correct since v=rw.
I cannot update the code directly now e.g.
export function surfaceVelocityFull(v, w) {
return v.clone().addScaledVector(upCross(w),R)
}
because I think this confusion of R=0.5 or R=1 occurs frequently throughout the code. I aim to fix this when I've found all places where this impacts.
from billiards.
Take a look at
I have made the equations match the paper directly with inclusion of R throughout.
The ball behaviour is about the same but I have now removed the odd 0.25 constant that was used earlier and mu is now 0.2 matching other papers values.
from billiards.
Here is a break using some backspin. I think the spin is far too 'slippery' and the friction during sliding needs to be much higher whereas the rolling friction should stay low. Not sure how to achieve this without introducing a new factor into Mxy.
from billiards.
Related Issues (5)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from billiards.