more c cleanup and label physics adjustments

Former-commit-id: 0915c6c04f958bbf233b02981320be626aae7d31
Former-commit-id: d63cf3baf92d2b35e462b324ce47bea8225ed39a
This commit is contained in:
nathan 2020-03-20 22:08:40 -07:00
parent 9b5cab173e
commit e78f3c4e0f
9 changed files with 28 additions and 38 deletions

View file

@ -1,11 +1,11 @@
#include "Aircraft.h" #include "Aircraft.h"
#include "dump1090.h" //for struct aircaft
Aircraft::Aircraft(struct aircraft *a) { Aircraft::Aircraft(struct aircraft *a) {
addr = a->addr; addr = a->addr;
created = 0; created = 0;
//oldIdx = 0;
prev_seen = 0; prev_seen = 0;
x = 0; x = 0;
@ -19,16 +19,8 @@ Aircraft::Aircraft(struct aircraft *a) {
doy = 0; doy = 0;
ddox = 0; ddox = 0;
ddoy = 0; ddoy = 0;
// memset(oldLon, 0, sizeof(oldLon));
// memset(oldLat, 0, sizeof(oldLat));
// memset(oldHeading, 0, sizeof(oldHeading));
} }
Aircraft::~Aircraft() { Aircraft::~Aircraft() {
// free(oldLat);
// free(oldLon);
// free(oldHeading);
} }

View file

@ -1,5 +1,5 @@
#include <stdint.h> #include <stdint.h>
#include "dump1090.h"
#include <ctime> #include <ctime>
#include <list> #include <list>

View file

@ -1,5 +1,4 @@
#include "AircraftList.h" #include "AircraftList.h"
#include "dump1090.h"
static uint64_t mstime(void) { static uint64_t mstime(void) {
struct timeval tv; struct timeval tv;

View file

@ -1,5 +1,7 @@
#include "Aircraft.h" #include "Aircraft.h"
#include "dump1090.h" //for Modes
class AircraftList { class AircraftList {
public: public:
Aircraft *head; Aircraft *head;

View file

@ -1,8 +1,7 @@
#ifndef APPDATA_H #ifndef APPDATA_H
#define APPDATA_H #define APPDATA_H
#include "dump1090.h" #include "view1090.h" //for Modes
#include "view1090.h"
#include "AircraftList.h" #include "AircraftList.h"

View file

@ -1,5 +1,3 @@
#include "view1090.h"
#include "Input.h" #include "Input.h"
static uint64_t mstime(void) { static uint64_t mstime(void) {

View file

@ -1,5 +1,3 @@
#include "dump1090.h"
#include "SDL2/SDL2_rotozoom.h" #include "SDL2/SDL2_rotozoom.h"
#include "SDL2/SDL2_gfxPrimitives.h" #include "SDL2/SDL2_gfxPrimitives.h"
//color schemes //color schemes
@ -855,6 +853,12 @@ void View::drawSelectedAircraftText(Aircraft *p) {
void View::resolveLabelConflicts() { void View::resolveLabelConflicts() {
Aircraft *p = appData->aircraftList.head; 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) { while(p) {
Aircraft *check_p = appData->aircraftList.head; Aircraft *check_p = appData->aircraftList.head;
@ -868,14 +872,17 @@ void View::resolveLabelConflicts() {
//rectangleRGBA(renderer, p->x, p->y, p->x + p->w, p->y + p->h, 255,0,0, SDL_ALPHA_OPAQUE); //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); //lineRGBA(renderer, p->cx, p->cy, p->x, p->y, 0,255,0, SDL_ALPHA_OPAQUE);
//apply damping p->ddox = 0;
p->ddoy = 0;
p->ddox -= 0.07f * p->dox; float o_mag = sqrt(p->ox*p->ox + p->oy*p->oy);
p->ddoy -= 0.07f * p->doy;
//spring back to origin //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 // // //screen edge
@ -925,22 +932,22 @@ void View::resolveLabelConflicts() {
//left collision //left collision
if(check_left > p_left && check_left < p_right) { 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 //right collision
if(check_right > p_left && check_right < p_right) { 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 //top collision
if(check_top > p_top && check_top < p_bottom) { 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 //bottom collision
if(check_bottom > p_top && check_bottom < p_bottom) { 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; check_p = check_p -> next;
@ -950,8 +957,6 @@ void View::resolveLabelConflicts() {
//check against plane icons (include self) //check against plane icons (include self)
float plane_force = 0.08f;
p_left = p->x - 5 * screen_uiscale; p_left = p->x - 5 * screen_uiscale;
p_right = p->x + 5 * screen_uiscale; p_right = p->x + 5 * screen_uiscale;
p_top = p->y - 5 * screen_uiscale; p_top = p->y - 5 * screen_uiscale;
@ -1005,11 +1010,12 @@ void View::resolveLabelConflicts() {
p = appData->aircraftList.head; p = appData->aircraftList.head;
while(p) { while(p) {
//incorporate acceleration from label conflict resolution
p->dox += p->ddox; p->dox += p->ddox;
p->doy += p->ddoy; p->doy += p->ddoy;
p->dox *= damping_force;
p->doy *= damping_force;
if(fabs(p->dox) > 10.0f) { if(fabs(p->dox) > 10.0f) {
p->dox = sign(p->dox) * 10.0f; p->dox = sign(p->dox) * 10.0f;
} }
@ -1029,11 +1035,6 @@ void View::resolveLabelConflicts() {
p->ox += p->dox; p->ox += p->dox;
p->oy += p->doy; 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->x = p->cx + (int)round(p->ox);
p->y = p->cy + (int)round(p->oy); p->y = p->cy + (int)round(p->oy);

View file

@ -1 +1 @@
c64f58d5a0b612b1c29e1585a52d19dfa7ac4b92 35e0993090bbfbe86d9367ce99c671435554d2ac

View file

@ -28,7 +28,6 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// //
#include "view1090.h"
#include "AppData.h" #include "AppData.h"
#include "View.h" #include "View.h"
#include "Input.h" #include "Input.h"