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 "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);
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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;
@ -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);
//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;
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);

View file

@ -1 +1 @@
c64f58d5a0b612b1c29e1585a52d19dfa7ac4b92
35e0993090bbfbe86d9367ce99c671435554d2ac

View file

@ -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"