wrong position, or I'm doing something wrong

Discuss any Chipmunk bugs here.

wrong position, or I'm doing something wrong

Postby Dethrail » Mon Mar 24, 2014 2:03 pm

Hello, I'm don't know english good, I will try to show my problem.

First part of my problem:
two bodies fall down from different position, and will stop on different coordinates, whan is wrong? Please help me...

Second part of my problem: I will try to reproduce this bug on C, with hello_chipmunk:

this is code:
Code: Select all
#include <stdio.h>
#include <stdlib.h>

#include <chipmunk.h>

#include <stdio.h>
#include <chipmunk.h>

int main(void){
        // cpVect is a 2D vector and cpv() is a shortcut for initializing them.
        cpVect gravity = cpv(0, -9.8);

        // Create an empty space.
        cpSpace *space = cpSpaceNew();
        cpSpaceSetGravity(space, gravity);

        // Add a static line segment shape for the ground.
        // We'll make it slightly tilted so the ball will roll off.
        // We attach it to space->staticBody to tell Chipmunk it shouldn't be movable.
        cpShape *ground = cpSegmentShapeNew(space->staticBody, cpv(-50, 2), cpv(50, 2), 0);
        cpShapeSetFriction(ground, 1);
        cpSpaceAddShape(space, ground);

        // Now let's make a ball that falls onto the line and rolls off.
        // First we need to make a cpBody to hold the physical properties of the object.
        // These include the mass, position, velocity, angle, etc. of the object.
        // Then we attach collision shapes to the cpBody to give it a size and shape.

        cpFloat radius = 0.1;
        cpFloat mass = 1;

        // The moment of inertia is like mass for rotation
        // Use the cpMomentFor*() functions to help you approximate it.
        cpFloat moment = cpMomentForCircle(mass, 0, radius, cpvzero);

        // The cpSpaceAdd*() functions return the thing that you are adding.
        // It's convenient to create and add an object in one line.
        cpBody *ballBody = cpSpaceAddBody(space, cpBodyNew(mass, moment));
        cpBodySetPos(ballBody, cpv(0, 3+0.22));
        cpBody *ballBody2 = cpSpaceAddBody(space, cpBodyNew(mass, moment));
        cpBodySetPos(ballBody2, cpv(0.2, 3+0.44));
        // Now we create the collision shape for the ball.
        // You can create multiple collision shapes that point to the same body.
        // They will all be attached to the body and move around to follow it.
        cpShape *ballShape = cpSpaceAddShape(space, cpCircleShapeNew(ballBody, radius, cpvzero));
        cpShapeSetFriction(ballShape, 0.7);
        cpShape *ballShape2 = cpSpaceAddShape(space, cpCircleShapeNew(ballBody2, radius, cpvzero));
        cpShapeSetFriction(ballShape2, 0.7);

        // Now that it's all set up, we simulate all the objects in the space by
        // stepping forward through time in small increments called steps.
        // It is *highly* recommended to use a fixed size time step.
        cpFloat timeStep = 1.0/60.0;
        for(cpFloat time = 0; time < 2; time += timeStep){
                cpVect pos = cpBodyGetPos(ballBody);
                cpVect vel = cpBodyGetVel(ballBody);
                        "1ballBody is at (%5.2f, %5.2f). It's velocity is (%5.2f, %5.2f)\n",
                        pos.x, pos.y, vel.x, vel.y
                cpVect pos2 = cpBodyGetPos(ballBody2);
                cpVect vel2 = cpBodyGetVel(ballBody2);
                        "2ballBody is at (%5.2f, %5.2f). It's velocity is (%5.2f, %5.2f)\n",
                        pos2.x, pos2.y, vel2.x, vel2.y
                cpSpaceStep(space, timeStep);

        // Clean up our objects and exit!

        return 0;

on image same problem, what I make wrong?
Posts: 1
Joined: Mon Mar 24, 2014 3:44 am

Return to Bugs

Who is online

Users browsing this forum: No registered users and 1 guest