more c cleanup and label physics adjustments
Former-commit-id: 0915c6c04f958bbf233b02981320be626aae7d31 Former-commit-id: d63cf3baf92d2b35e462b324ce47bea8225ed39a
This commit is contained in:
parent
9b5cab173e
commit
e78f3c4e0f
10
Aircraft.cpp
10
Aircraft.cpp
|
@ -1,11 +1,11 @@
|
|||
#include "Aircraft.h"
|
||||
|
||||
#include "dump1090.h" //for struct aircaft
|
||||
|
||||
|
||||
Aircraft::Aircraft(struct aircraft *a) {
|
||||
addr = a->addr;
|
||||
created = 0;
|
||||
//oldIdx = 0;
|
||||
prev_seen = 0;
|
||||
|
||||
x = 0;
|
||||
|
@ -19,16 +19,8 @@ Aircraft::Aircraft(struct aircraft *a) {
|
|||
doy = 0;
|
||||
ddox = 0;
|
||||
ddoy = 0;
|
||||
|
||||
// memset(oldLon, 0, sizeof(oldLon));
|
||||
// memset(oldLat, 0, sizeof(oldLat));
|
||||
// memset(oldHeading, 0, sizeof(oldHeading));
|
||||
}
|
||||
|
||||
|
||||
Aircraft::~Aircraft() {
|
||||
|
||||
// free(oldLat);
|
||||
// free(oldLon);
|
||||
// free(oldHeading);
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
#include <stdint.h>
|
||||
#include "dump1090.h"
|
||||
|
||||
#include <ctime>
|
||||
#include <list>
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include "AircraftList.h"
|
||||
#include "dump1090.h"
|
||||
|
||||
static uint64_t mstime(void) {
|
||||
struct timeval tv;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "Aircraft.h"
|
||||
|
||||
#include "dump1090.h" //for Modes
|
||||
|
||||
class AircraftList {
|
||||
public:
|
||||
Aircraft *head;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#ifndef APPDATA_H
|
||||
#define APPDATA_H
|
||||
|
||||
#include "dump1090.h"
|
||||
#include "view1090.h"
|
||||
#include "view1090.h" //for Modes
|
||||
|
||||
#include "AircraftList.h"
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#include "view1090.h"
|
||||
|
||||
#include "Input.h"
|
||||
|
||||
static uint64_t mstime(void) {
|
||||
|
|
43
View.cpp
43
View.cpp
|
@ -1,5 +1,3 @@
|
|||
#include "dump1090.h"
|
||||
|
||||
#include "SDL2/SDL2_rotozoom.h"
|
||||
#include "SDL2/SDL2_gfxPrimitives.h"
|
||||
//color schemes
|
||||
|
@ -855,6 +853,12 @@ void View::drawSelectedAircraftText(Aircraft *p) {
|
|||
void View::resolveLabelConflicts() {
|
||||
Aircraft *p = appData->aircraftList.head;
|
||||
|
||||
float label_force = 0.01f;
|
||||
float plane_force = 0.01f;
|
||||
float damping_force = 0.95f;
|
||||
float spring_force = 0.02f;
|
||||
float spring_length = 10.0f;
|
||||
|
||||
while(p) {
|
||||
|
||||
Aircraft *check_p = appData->aircraftList.head;
|
||||
|
@ -867,15 +871,18 @@ void View::resolveLabelConflicts() {
|
|||
//debug box
|
||||
//rectangleRGBA(renderer, p->x, p->y, p->x + p->w, p->y + p->h, 255,0,0, SDL_ALPHA_OPAQUE);
|
||||
//lineRGBA(renderer, p->cx, p->cy, p->x, p->y, 0,255,0, SDL_ALPHA_OPAQUE);
|
||||
|
||||
p->ddox = 0;
|
||||
p->ddoy = 0;
|
||||
|
||||
//apply damping
|
||||
|
||||
p->ddox -= 0.07f * p->dox;
|
||||
p->ddoy -= 0.07f * p->doy;
|
||||
float o_mag = sqrt(p->ox*p->ox + p->oy*p->oy);
|
||||
|
||||
//spring back to origin
|
||||
p->ddox -= 0.005f * p->ox;
|
||||
p->ddoy -= 0.005f * p->oy;
|
||||
|
||||
if(o_mag > 0) {
|
||||
p->ddox -= p->ox / o_mag * spring_force * (o_mag - spring_length);
|
||||
p->ddoy -= p->oy / o_mag * spring_force * (o_mag - spring_length);
|
||||
}
|
||||
|
||||
// // //screen edge
|
||||
|
||||
|
@ -925,22 +932,22 @@ void View::resolveLabelConflicts() {
|
|||
|
||||
//left collision
|
||||
if(check_left > p_left && check_left < p_right) {
|
||||
check_p->ddox -= 0.01f * (float)(check_left - p_right);
|
||||
check_p->ddox -= label_force * (float)(check_left - p_right);
|
||||
}
|
||||
|
||||
//right collision
|
||||
if(check_right > p_left && check_right < p_right) {
|
||||
check_p->ddox -= 0.01f * (float)(check_right - p_left);
|
||||
check_p->ddox -= label_force * (float)(check_right - p_left);
|
||||
}
|
||||
|
||||
//top collision
|
||||
if(check_top > p_top && check_top < p_bottom) {
|
||||
check_p->ddoy -= 0.01f * (float)(check_top - p_bottom);
|
||||
check_p->ddoy -= label_force * (float)(check_top - p_bottom);
|
||||
}
|
||||
|
||||
//bottom collision
|
||||
if(check_bottom > p_top && check_bottom < p_bottom) {
|
||||
check_p->ddoy -= 0.01f * (float)(check_bottom - p_top);
|
||||
check_p->ddoy -= label_force * (float)(check_bottom - p_top);
|
||||
}
|
||||
}
|
||||
check_p = check_p -> next;
|
||||
|
@ -950,8 +957,6 @@ void View::resolveLabelConflicts() {
|
|||
|
||||
//check against plane icons (include self)
|
||||
|
||||
float plane_force = 0.08f;
|
||||
|
||||
p_left = p->x - 5 * screen_uiscale;
|
||||
p_right = p->x + 5 * screen_uiscale;
|
||||
p_top = p->y - 5 * screen_uiscale;
|
||||
|
@ -1005,11 +1010,12 @@ void View::resolveLabelConflicts() {
|
|||
p = appData->aircraftList.head;
|
||||
|
||||
while(p) {
|
||||
//incorporate acceleration from label conflict resolution
|
||||
|
||||
p->dox += p->ddox;
|
||||
p->doy += p->ddoy;
|
||||
|
||||
p->dox *= damping_force;
|
||||
p->doy *= damping_force;
|
||||
|
||||
if(fabs(p->dox) > 10.0f) {
|
||||
p->dox = sign(p->dox) * 10.0f;
|
||||
}
|
||||
|
@ -1029,11 +1035,6 @@ void View::resolveLabelConflicts() {
|
|||
p->ox += p->dox;
|
||||
p->oy += p->doy;
|
||||
|
||||
//printf("p_ox: %f, p_oy %f\n",p->ox, p->oy);
|
||||
|
||||
p->ddox = 0;
|
||||
p->ddoy = 0;
|
||||
|
||||
p->x = p->cx + (int)round(p->ox);
|
||||
p->y = p->cy + (int)round(p->oy);
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
c64f58d5a0b612b1c29e1585a52d19dfa7ac4b92
|
||||
35e0993090bbfbe86d9367ce99c671435554d2ac
|
|
@ -28,7 +28,6 @@
|
|||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
#include "view1090.h"
|
||||
#include "AppData.h"
|
||||
#include "View.h"
|
||||
#include "Input.h"
|
||||
|
|
Loading…
Reference in a new issue