Jump to content
  • Advertisement

Fulcrum.013

Member
  • Content Count

    357
  • Joined

  • Last visited

  • Days Won

    2

Fulcrum.013 last won the day on September 23

Fulcrum.013 had the most liked content!

Community Reputation

14 Neutral

1 Follower

About Fulcrum.013

  • Rank
    Member

Personal Information

  • Role
    Programmer
  • Interests
    Programming

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Dont sure how it exactly called by English, but litherally translated from Russian it sounds like "theory of automative control".
  2. Real-world autopilots use separate channel for each axe. Each PID converts input volume (that usually is a input from sensors) to output volume (that is a power delivered by drives) only. If we drive a some feedback (that usually sensors do) to PID input it able to keep/follow target value of sensed signal with some dT kown as regulation delay. Linked to chains it able to keep a orientation using angular speed as intermediate (PID regulated by chained regulator) value for example. But it works separately for each deegry of freedom and able to drive system from current state to target state only. So if you need sequence of moves you have to set a sequence of targets to channels that can be followed sequentaly or simulateousely. For example you can setup required to acceleration impulse orientation to orientation channels, await until it reach required orientation, then setup a target velocity vector to main thrust channel, avait while it reach it velocity, and then setup other orientation (for example that match velocity direction). It what you logic have to do - to setup targets for regulators, wich drive system from current state to target state by shortest possible way. Really PIDs level of system work like a cerebellum, while higher level logic works as brain that set sequential goals to cerebellum
  3. Find a normalized vector from your object to target. Find projection of its vector to coordinate planes of object's local coordinate system. Now calculate angles betwin of its projections and forward axe . Use a PIDs to turn on orientation trust proportionally to its angles (or ever proportionally to just a projections of target dir vector to other local axes for simplified but much faster approach). It will follow a target point ever in case target point is moving. Say more if you will use a differences of angles calculated on 2 consequtive steps as input of PIDs it will follow a interseption point for moving targets.
  4. Really angular velocity is integration of applied torque impulses. So to get a required orientation it required to apply at least 2 consequtive impulses - one to start rotation and other to stop it. On most use-cases it require a proportinal navigation , so PID regulation is better (intendent for its kind of tasks)and simpliest way to implement it.
  5. Also look to smart-contracts and other blockchain-related projects. Most of its projects looking for C++ programmers for long term remote job and have a competitive salary. Technically im a computer scientist too (Specialist of Applicative Mathematic and CS). But really i am just a Engineer-programmer, not currently related to any scientific researches. Im just designing and implementing a containers library that have to be better than stl and language that have to be better than modern C++.
  6. Offtop. Just intrasting what same Bachelour in Germany mean, that Bachelours called scientists. Just locally BS (ISCED level 6) is usualy 3 years of colledge, that ever is not a higher education, so Bachelours ever can not have a Engineer qualification, that require a Specialist (ISCED level 7) degree and mean 5 years of university. Scientists locally usualy have level 8 and higher.
  7. Really freelance assigments usually used to sipliest one time tasks that not worth to hire programmer fulltime. Somesing like a correct pictures position on web site or to make a additional tiny functionality is a usual assigments for freelancers. Nobody, but crazzy schollboys that ask to make a steam-top game with close to zero budget, will assign such complexive and long-term tasks as game and especially engine development to freelancers. So if you want to rise money on freelance try other areas where you have chance to make a good robust technology for yourself fast and serve big quantity of customers. For example currently highly contributed different kinds of website parsers. And i never see that freelance "gurus" use something else than regexps (regular grammars), so its parsers can not be efficient and require a huge code to implement for each assigment. But if you really scientist you have to know true tools to make it efficient and high productivily (i mean context free grammars, using wich HTML and other languages has been developed)
  8. Fulcrum.013

    Check Collision in advance

    Ok. Imagine a shеet of paper that lies on desk and have a u and v axes on it. You can move a point over sheet changing a values of u and v. Now lift up a sheet to make a some angle betwin desk and table. It not change ability to move a point over sheet (it coords on basis drawn on sheet still same and have same operations set to move it over sheet), But coords of point in 3D space has changed. So 3D coord of object that placed on some surface depends from u,v coords that relative to basis of its surface (aka surface coords) and properties of surface determined by equation of surface. Really lifting list up you dont changing a coords of point respectively to surface, you chaning a orientation of plane respectively to space where its surface placed. And to find a 3D coords from u,v coords of some point of surface it required only to substitute u,v to parametrical equation of surface. So you can just move a object placed on plane over its plane and recalculate its 3D point for rendering that is much eaily than move it in 3D and then align it to plane. Now imagine you have 2 sheets of paper. One of it lies on desk but other lifted up by some angle and aligned to first sheet along some edge. Obviuosly that second sheet have a other plane equation than first. so to move poiint from first sheet to second you have to recalculate a resulting point from surface coords of first sheet to surface coords of second sheet. It can be eaily done for points of alligned edge becouse its have same 3D coords for both planes. So you can move your object until central point reach portal edge , then recalculate a u,v respecively to second sheet basis (that require to solve simple equations system) and continue to move object but along second sheet.
  9. Naturally it still have G acceleration but also it have a horisontal velocity that not affected by gravity and allow to reach downhill side of loop prior to fall down significantly. Overdue of gravity force works for cost of accomulated kynetic energy. So common simulation of Newton laws and collision response performed by any phisical engine complitely enought to simulate effect that you want.
  10. Fulcrum.013

    Check Collision in advance

    I mean u,v coords of your planes. for plane/surface it same as x,y for 2D. you can just move object into u,v( x,y) of navpoly underleying plane and recalculate it to 3D coords using equation of surface (plane) to render object.
  11. Fulcrum.013

    Check Collision in advance

    Ok. For understanding how to add 3rd dimension just imagine that you have a plane and sphere same as line and circle. Also did you know what term "surface coords" mean?
  12. Fulcrum.013

    Destroying reference counted objects immediately

    Realy it possible 2 situations with GC mapped to native - script engine attached as static library and have a direcct access to RTTI provided by native side and monitor internal links of native objects. In it case it really imposible to destroy objects. And usual case where it works as dll/plugin so have a other heap and other mem manager than natiive side, and have access to objects vtable only to call native methods including addref/release functions to manage native side object ref counter. In its case it usually safe to delete a actual object/internal buffers when ref count down to 1, and keep alive a ref couner only to allow GC set refcount to 0 later.
  13. Fulcrum.013

    Check Collision in advance

    Also in case your character have to move along a surface only(i.e. can not jump/fall from borders) you can calculate coords by other way - to move character in current surface u,v coords and then compute a world position substituting current u,v to equation of surface. For planes its very simple to do. Also in case of planar only floor surfaces it can be easily extended to jumps/falls. You just have to substitute x,y,z of coord of closest to plane point of object to equation of plane to find a distance by normal and then project a 3D velocity to its vector. By other worlds - to add 3-rd dimension to same algo to have a time point on wich jumped/falling object will hit a plane and wich same plane, and ever to advice a coords of hit point. Really floor is same plane as wall but have other orientation of its normal vector. Only difference betwin walls and floors/ceiling that walls have a zero vertical component of normal, while horizontal floors/ceiling have a vertical component of normal 1 and other components is 0 for horisontal floor, and much higher vertical then other components for slooped floors.
  14. Fulcrum.013

    Int vs. Float Graphics Programming

    Older hardware (very older that has been used at began of GL and prior of it) has a very slow floating point processing or ever no hardware float point support at all. So for graphics applications fixed point that represented under hood by integers has been widely used. Also fixed point have a absolute error while floating point have a relative error. So ints better fits needs of precious calculations with limited max magnitude becouse using all bits to store a value, while floats using a part of bits to store a exponent (that is nonsence for calculations with fixed absolute error), so for mantiss it have less bits than ints. For example if you need to move something strictly by 1mm using a int32 you will have a 2^32 precious steps, but 2^32+1 steps will cause a overflow. For 32bit float that use 8 bits for exp and 24 bits for mantiss it obviously anycase can not exid 2^24 precious steps, while total range with less precission much much higher, while acceptible absolute magnitude of error usualy growth with measured value magnitude. For example when you measure 10 mm distance 0.1mm is can be significant error, but when you mesure 10km distance ever 10mm error usually not so significant and you can store both its values with float, while with fixed you need a different storages that processed with accounting where fixed point placed, and ineroperation of 2 fixed point values can not be performed with better absolute error then max absolute error of operands without increasing size of storage. So float point is just store position of point for current value and on ineroperations use absolute error that fit to current storage, so make a error relative to magnitude of resulting value. Really older hardware has used 80-bit representation for any 32 64 or 80 bits representation of operands for interoperations and then cut values to required storage precission (that done by fast biwice and coupled with shift operations). Modern hardware additionaly able to operate with 128 bits floats, while result of 64 bits integer multiplication not fit to 64 bit register so have to return result into pair of regs and may overflow 64bit storage (for 8, 16 and 32 bits architectures it was a same problem with inegers production).
  15. Fulcrum.013

    Destroying reference counted objects immediately

    Also why you need a "script side" if you already have a 2-way lifetime managment mechanism that mach more powerfull tool then GC? Only that scripts can do better then C++ - is to eat CPU cycles and restrict a best object hierarhie architectures.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!