I will speak for Taehl since he's a close personal friend:
Taehl has been without internet for nearly a year now due to his living situation but I can tell you that he would not mind anyone using his work as long as proper credit was attributed to him.
Fizz X
- Positive07
- Party member
- Posts: 1014
- Joined: Sun Aug 12, 2012 4:34 pm
- Location: Argentina
Re: Fizz X
Well I downloaded the demo from this post I dont know if it is updated but playing a little I found some little mistakes... spheres through the ground... (there is an sphere missing also that went through the ground and now is not visible any more)
EDIT: Well I tried the new version and its much better than the last but a block fell on me and I disappeared through the ground, it doesnt happen with spheres any more but when blocks fall from the top they have too much force. I may use this physics module in my games thanks
here is a pic showing the errors
EDIT: Well I tried the new version and its much better than the last but a block fell on me and I disappeared through the ground, it doesnt happen with spheres any more but when blocks fall from the top they have too much force. I may use this physics module in my games thanks
here is a pic showing the errors
Last edited by Positive07 on Sun Nov 25, 2012 5:21 am, edited 1 time in total.
for i, person in ipairs(everybody) do
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
Re: Fizz X
Hey thanks a lot for trying the demo.
I'm afraid the version you tested may have not been up to date.
Can you please try the new .love file (version 6) which I uploaded in the original post?
Thanks again for the feedback!
I'm afraid the version you tested may have not been up to date.
Can you please try the new .love file (version 6) which I uploaded in the original post?
Thanks again for the feedback!
- Positive07
- Party member
- Posts: 1014
- Joined: Sun Aug 12, 2012 4:34 pm
- Location: Argentina
Re: Fizz X
UPDATED last message. Thaks for the new demo its pretty good and simple I really like Fizz!
for i, person in ipairs(everybody) do
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
Re: Fizz X
Hey thanks again! One of fizz's limitations is "stacking" (when you have more than 2 or 3 shapes on top of each other and gravity is pulling them down). Unfortunately, this turns out to be a non-trivial problem to solve.
Also, I'm looking for help from the Love2D community by somebody with a good understanding of math or geometry.
I'm having trouble with the line-vs-AABB intersection algorithm.
I can detect if a line intersects with an AABB but I can't figure out what the penetration depth is.
Line shapes have a direction (can only be penetrated on one side) so the collision normal is known already.
Here is a diagram which illustrates the value that I'm looking for:
Basically, I'm trying to find out the length of the RED line (penetration depth).
Here is the algorithm with a todo:
Would appreciate any help greatly!
Also, I'm looking for help from the Love2D community by somebody with a good understanding of math or geometry.
I'm having trouble with the line-vs-AABB intersection algorithm.
I can detect if a line intersects with an AABB but I can't figure out what the penetration depth is.
Line shapes have a direction (can only be penetrated on one side) so the collision normal is known already.
Here is a diagram which illustrates the value that I'm looking for:
Basically, I'm trying to find out the length of the RED line (penetration depth).
Here is the algorithm with a todo:
Code: Select all
function testLineRect(a, b)
-- line vector
local dx, dy = a.x2 - a.x, a.y2 - a.y
-- line halflength vector
local hdx, hdy = dx/2, dy/2
-- line midpoint
local mx, my = a.x + hdx, a.y + hdy
-- translate midpoint to rect origin
mx, my = mx - b.x, my - b.y
-- separating axes tests
local ahdx = abs(hdx)
if abs(mx) > b.hw + ahdx then
return
end
local ahdy = abs(hdy)
if abs(my) > b.hh + ahdy then
return
end
-- wedge product test (cross product in 2D)
local cross1 = b.hw*ahdy + b.hh*ahdx
local cross2 = abs(mx*hdy - my*hdx)
if cross2 > cross1 then
return
end
-- collision normal is the line rotated by 90 degrees
local d = sqrt(dx*dx + dy*dy)
local nx, ny = dy/d, -dx/d
-- allow passing through one side of the line
local vx = (a.xv or 0) - (b.xv or 0)
local vy = (a.yv or 0) - (b.yv or 0)
local dot = vx*nx + vy*ny
if dot > 0 then
return
end
-- todo: WHAT'S THE PENETRATION DEPTH?
local pen = ???
return nx, ny, pen
end
- Positive07
- Party member
- Posts: 1014
- Joined: Sun Aug 12, 2012 4:34 pm
- Location: Argentina
Re: Fizz X
You dont calculate directly the penetration you need the point where both the line and the block crosses, once you have this you calculate the distance between two points, one is the start (or end, depends on wich side is inside the rectangle) and that point thats your penetration. The difficult task here is detecting wich side of the line is inside the block.
Im looking for penetration of rotated forms, that would be great and is not that difficult i may write something so you can add this feature to fizz x.
PS: Your code is awesome
Im looking for penetration of rotated forms, that would be great and is not that difficult i may write something so you can add this feature to fizz x.
PS: Your code is awesome
for i, person in ipairs(everybody) do
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
- kikito
- Inner party member
- Posts: 3153
- Joined: Sat Oct 03, 2009 5:22 pm
- Location: Madrid, Spain
- Contact:
Re: Fizz X
Check this out: viewtopic.php?f=5&t=11752ivan wrote: I'm having trouble with the line-vs-AABB intersection algorithm.
When I write def I mean function.
Re: Fizz X
Yes, I think I know what you mean. Unfortunately it seems there isn't a simple solution except for testing which of the 4 corners of the AABB is "penetrating" the line deepest. By "penetrating" the line, I mean which corner of the AABB is deepest "down" in relation to the collision normal. Meh, I think it's too complicated, might as well drop support for line shapes altogether.Positive07 wrote:You dont calculate directly the penetration you need the point where both the line and the block crosses, once you have this you calculate the distance between two points, one is the start (or end, depends on wich side is inside the rectangle) and that point thats your penetration. The difficult task here is detecting wich side of the line is inside the block.
Sounds interesting, although I'm not sure if it's very applicable for old-school platformer games.Positive07 wrote:Im looking for penetration of rotated forms, that would be great and is not that difficult i may write something so you can add this feature to fizz x.
Thanks, I can't take full credit though, a lot of the intersection code is based on "Realtime Collision Detection" by Ericsson.Positive07 wrote:PS: Your code is awesome
Thanks kikito, I've seen similar algorithms. I'm afraid the issue with Fizz is not detecting IF the line intersects the AABB but what the separation vector should be (in particular, its magnitude).
- kikito
- Inner party member
- Posts: 3153
- Joined: Sat Oct 03, 2009 5:22 pm
- Location: Madrid, Spain
- Contact:
Re: Fizz X
You should read it again. The algorithm in fact calculates the magnitude (t0 and t1).ivan wrote:Thanks kikito, I've seen similar algorithms. I'm afraid the issue with Fizz is not detecting IF the line intersects the AABB but what the separation vector should be (in particular, its magnitude).
When I write def I mean function.
Re: Fizz X
Yes, I noticed that you find the intersection points between the line and the AABB.kikito wrote:You should read it again. The algorithm in fact calculates the magnitude (t0 and t1).
My question is, how would separate the AABB so they are no longer intersecting (assuming the line is static)?
The idea in FizzX was to move the AABB in a direction perpendicular to the line normal (I suppose this could be wrong?)
What do you think?
Who is online
Users browsing this forum: No registered users and 6 guests