fixed std:chrono issues

Former-commit-id: 2461384e0f6e6c638c2fadd8eb0263fc6d8d5dac
This commit is contained in:
nathan 2020-06-14 15:26:26 -07:00
parent df2ea21cde
commit 92d4bf928e
9 changed files with 292 additions and 81 deletions

View file

@ -1,8 +1,12 @@
#include "Aircraft.h"
static auto now() {
return std::chrono::high_resolution_clock::now();
}
Aircraft::Aircraft(uint32_t addr) {
this->addr = addr;
created = 0;
// created = now();
prev_seen = 0;
x = 0;
@ -16,6 +20,9 @@ Aircraft::Aircraft(uint32_t addr) {
doy = 0;
ddox = 0;
ddoy = 0;
lon = 0;
lat = 0;
}

View file

@ -2,6 +2,7 @@
#include <ctime>
#include <vector>
#include <chrono>
class Aircraft {
public:
@ -20,16 +21,17 @@ public:
//history
std::vector <float> lonHistory, latHistory, headingHistory, timestampHistory;
std::vector <float> lonHistory, latHistory, headingHistory;
std::vector <std::chrono::high_resolution_clock::time_point> timestampHistory;
// float oldLon[TRAIL_LENGTH];
// float oldLat[TRAIL_LENGTH];
// float oldHeading[TRAIL_LENGTH];
// time_t oldSeen[TRAIL_LENGTH];
// uint8_t oldIdx;
uint64_t created;
uint64_t msSeen;
uint64_t msSeenLatLon;
std::chrono::high_resolution_clock::time_point created;
std::chrono::high_resolution_clock::time_point msSeen;
std::chrono::high_resolution_clock::time_point msSeenLatLon;
int live;
struct Aircraft *next; // Next aircraft in our linked list

View file

@ -1,9 +1,7 @@
#include "AircraftList.h"
#include <chrono>
static uint64_t now() {
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
static auto now() {
return std::chrono::high_resolution_clock::now();
}
@ -56,31 +54,32 @@ void AircraftList::update(Modes *modes) {
memcpy(p->flight, a->flight, sizeof(p->flight));
memcpy(p->signalLevel, a->signalLevel, sizeof(p->signalLevel));
if(p->seenLatLon == a->seenLatLon) {
a = a->next;
continue;
}
p->msSeenLatLon = now();
p->seenLatLon = a->seenLatLon;
p->altitude = a->altitude;
p->speed = a->speed;
p->track = a->track;
p->vert_rate = a->vert_rate;
if(p->lon == 0) {
p->created = now();
}
p->lon = a->lon;
p->lat = a->lat;
if(p->seenLatLon < a->seenLatLon) {
p->msSeenLatLon = now();
// p->oldIdx = (p->oldIdx+1) % 32;
// p->oldLon[p->oldIdx] = p->lon;
// p->oldLat[p->oldIdx] = p->lat;
p->lonHistory.push_back(p->lon);
p->latHistory.push_back(p->lat);
p->headingHistory.push_back(p->track);
p->timestampHistory.push_back(p->seenLatLon);
// p->oldHeading[p->oldIdx] = p->track;
// p->oldSeen[p->oldIdx] = p->seenLatLon;
}
p->seenLatLon = a->seenLatLon;
p->lonHistory.push_back(p->lon);
p->latHistory.push_back(p->lat);
p->headingHistory.push_back(p->track);
p->timestampHistory.push_back(p->msSeenLatLon);
a = a->next;
}

View file

@ -1,13 +1,15 @@
#include "Input.h"
#include <chrono>
static uint64_t now() {
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
static std::chrono::high_resolution_clock::time_point now() {
return std::chrono::high_resolution_clock::now();
}
static uint64_t elapsed(uint64_t ref) {
return now() - ref;
// static uint64_t now() {
// return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now().time_since_epoch).count();
// }
static uint64_t elapsed(std::chrono::high_resolution_clock::time_point ref) {
return std::chrono::duration_cast<std::chrono::milliseconds>(now() - ref).count();
}
template <typename T> int sgn(T val) {
@ -55,14 +57,14 @@ void Input::getInput()
view->mapMoved = 1;
if(elapsed(touchDownTime) > 100) {
touchDownTime = 0;
//touchDownTime = 0;
}
break;
case SDL_FINGERMOTION:;
if(elapsed(touchDownTime) > 150) {
tapCount = 0;
touchDownTime = 0;
//touchDownTime = 0;
}
view->moveCenterRelative( view->screen_width * event.tfinger.dx, view->screen_height * event.tfinger.dy);
break;

View file

@ -4,6 +4,8 @@
#include "AppData.h"
#include "View.h"
#include <chrono>
class Input {
public:
void getInput();
@ -14,7 +16,7 @@ public:
View *view;
AppData *appData;
uint64_t touchDownTime;
std::chrono::high_resolution_clock::time_point touchDownTime;
int touchx;
int touchy;
int tapCount;

View file

@ -3,7 +3,7 @@
# sure that the variable PREFIX is defined, e.g. make PREFIX=/usr/local
#
CFLAGS=-O2 -Wno-write-strings
CFLAGS=-O2 -g -Wno-write-strings
LIBS=-lm -lSDL2 -lSDL2_ttf -lSDL2_gfx
CC=g++

View file

@ -8,24 +8,21 @@
#include "View.h"
#include <iostream>
#include <chrono>
#include <thread>
static uint64_t now() {
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
using fmilliseconds = std::chrono::duration<float, std::milli>;
using fseconds = std::chrono::duration<float>;
static std::chrono::high_resolution_clock::time_point now() {
return std::chrono::high_resolution_clock::now();
}
static time_t now_s() {
return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
static float elapsed(std::chrono::high_resolution_clock::time_point ref) {
return (fmilliseconds {now() - ref}).count();
}
static uint64_t elapsed(uint64_t ref) {
return now() - ref;
}
static time_t elapsed_s(time_t ref) {
return now_s() - ref;
static float elapsed_s(std::chrono::high_resolution_clock::time_point ref) {
return (fseconds { now() - ref}).count();
}
static float sign(float x) {
@ -536,11 +533,18 @@ void View::drawPlaneIcon(int x, int y, float heading, SDL_Color planeColor)
void View::drawTrail(Aircraft *p) {
int currentX, currentY, prevX, prevY;
float dx, dy;
if(p->lonHistory.empty()) {
if(p->lonHistory.empty()) {
return;
}
// pxFromLonLat(&dx, &dy, p->lonHistory.back(), p->latHistory.back());
// screenCoords(&currentX, &currentY, dx, dy);
// circleRGBA(renderer, currentX, currentY, 4 * screen_uiscale, 255,255,255,127);
std::vector<float>::iterator lon_idx = p->lonHistory.begin();
std::vector<float>::iterator lat_idx = p->latHistory.begin();
std::vector<float>::iterator heading_idx = p->headingHistory.begin();
@ -549,7 +553,6 @@ void View::drawTrail(Aircraft *p) {
for(; std::next(lon_idx) != p->lonHistory.end(); ++lon_idx, ++lat_idx, ++heading_idx) {
float dx, dy;
pxFromLonLat(&dx, &dy, *(std::next(lon_idx)), *(std::next(lat_idx)));
screenCoords(&currentX, &currentY, dx, dy);
@ -766,11 +769,13 @@ void View::drawPlaneText(Aircraft *p) {
int currentLine = 0;
float pressure_scale = 1.0f; //this should be set by a UI slider eventually
if(elapsed(p->msSeenLatLon) < 500) {
circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0));
}
if(p->pressure * screen_width< 0.4f) {
if(p->pressure * screen_width < pressure_scale) {
drawSignalMarks(p, p->x, p->y);
char flight[10] = " ";
@ -784,7 +789,7 @@ void View::drawPlaneText(Aircraft *p) {
}
}
if(p->pressure * screen_width < 0.2f) {
if(p->pressure * screen_width < 0.5f * pressure_scale) {
char alt[10] = " ";
if (metric) {
currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828));
@ -851,6 +856,10 @@ void View::drawSelectedAircraftText(Aircraft *p) {
int currentLine = 0;
if(elapsed(p->msSeenLatLon) < 500) {
circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0));
}
drawSignalMarks(p, x, y);
char flight[10] = " ";
@ -1092,7 +1101,9 @@ void View::drawPlanes() {
// draw all trails first so they don't cover up planes and text
// also find closest plane to selection point
while(p) {
drawTrail(p);
if (p->lon && p->lat) {
drawTrail(p);
}
p = p->next;
}
@ -1111,11 +1122,7 @@ void View::drawPlanes() {
pxFromLonLat(&dx, &dy, p->lon, p->lat);
screenCoords(&x, &y, dx, dy);
if(p->created == 0) {
p->created = now();
}
float age_ms = (float)elapsed(p->created);
float age_ms = elapsed(p->created);
if(age_ms < 500) {
circleRGBA(renderer, x, y, 500 - age_ms, 255,255, 255, (uint8_t)(255.0 * age_ms / 500.0));
} else {
@ -1123,20 +1130,32 @@ void View::drawPlanes() {
int usex = x;
int usey = y;
if(p->seenLatLon > p->timestampHistory.back()) {
int oldx, oldy;
//draw predicted position
// if(p->timestampHistory.size() > 2) {
pxFromLonLat(&dx, &dy, p->lonHistory.back(), p->latHistory.back());
screenCoords(&oldx, &oldy, dx, dy);
// int x1, y1, x2, y2;
float velx = (x - oldx) / (1000.0 * (p->seenLatLon - p->timestampHistory.back()));
float vely = (y - oldy) / (1000.0 * (p->seenLatLon - p->timestampHistory.back()));
// pxFromLonLat(&dx, &dy, p->lonHistory.end()[-1], p->latHistory.end()[-1]);
// screenCoords(&x1, &y1, dx, dy);
usex = x + elapsed(p->msSeenLatLon) * velx;
usey = y + elapsed(p->msSeenLatLon) * vely;
}
// pxFromLonLat(&dx, &dy, p->lonHistory.end()[-2], p->latHistory.end()[-2]);
// screenCoords(&x2, &y2, dx, dy);
planeColor = lerpColor(style.planeColor, style.planeGoneColor, float(elapsed_s(p->seen)) / (float) DISPLAY_ACTIVE);
// //printf("latlon: [%f %f] -> [%f %f], px: [%d %d] -> [%d %d]\n",p->lonHistory.end()[-1], p->latHistory.end()[-1],p->lonHistory.end()[-2], p->latHistory.end()[-2], x1,y1,x2,y2);
// float velx = float(x1 - x2) / (fmilliseconds{p->timestampHistory.end()[-1] - p->timestampHistory.end()[-2]}).count();
// float vely = float(y1 - y2) / (fmilliseconds{p->timestampHistory.end()[-1] - p->timestampHistory.end()[-2]}).count();
// //printf("diff: %f\n",(fmilliseconds{p->timestampHistory.end()[-1] - p->timestampHistory.end()[-2]}).count());
// //printf("%f %f, %d - %d \n", velx,vely,p->timestampHistory.end()[-1], p->timestampHistory.end()[-2]);
// usex = x + float(elapsed(p->msSeenLatLon)) * velx;
// usey = y + float(elapsed(p->msSeenLatLon)) * vely;
// }
planeColor = lerpColor(style.planeColor, style.planeGoneColor, float(elapsed_s(p->msSeen)) / (float) DISPLAY_ACTIVE);
if(p == selectedAircraft) {
planeColor = style.selectedColor;
@ -1258,8 +1277,12 @@ void View::moveMapToTarget() {
}
void View::drawMouse() {
if(mouseMovedTime == 0 || elapsed(mouseMovedTime) > 1000) {
mouseMovedTime = 0;
if(!mouseMoved) {
return;
}
if(elapsed(mouseMovedTime) > 1000) {
mouseMoved = false;
return;
}
@ -1342,6 +1365,7 @@ void View::registerClick(int tapcount, int x, int y) {
}
void View::registerMouseMove(int x, int y) {
mouseMoved = true;
mouseMovedTime = now();
this->mousex = x;
this->mousey = y;
@ -1457,7 +1481,7 @@ void View::draw() {
SDL_RenderPresent(renderer);
if (elapsed(drawStartTime) < FRAMETIME) {
std::this_thread::sleep_for(std::chrono::milliseconds((FRAMETIME - elapsed(drawStartTime))));
std::this_thread::sleep_for(fmilliseconds{FRAMETIME} - (now() - drawStartTime));
}
lastFrameTime = now();

11
View.h
View file

@ -5,6 +5,7 @@
#include "Map.h"
#include "SDL2/SDL.h"
#include "SDL2/SDL_ttf.h"
#include <chrono>
//defs - should all move to config file setup
#define ROUND_RADIUS 3 //radius of text box corners
@ -52,11 +53,13 @@ class View {
AppData *appData;
//for cursor drawing
uint64_t mouseMovedTime;
std::chrono::high_resolution_clock::time_point mouseMovedTime;
bool mouseMoved;
int mousex;
int mousey;
uint64_t clickTime;
std::chrono::high_resolution_clock::time_point clickTime;
bool clicked;
int clickx;
int clicky;
@ -129,8 +132,8 @@ class View {
int mapRedraw;
float currentLon;
float currentLat;
uint64_t lastFrameTime;
uint64_t drawStartTime;
std::chrono::high_resolution_clock::time_point lastFrameTime;
std::chrono::high_resolution_clock::time_point drawStartTime;
Map map;

172
seen Normal file
View file

@ -0,0 +1,172 @@
net_io.c: while ((p) && (p->next != c)) {
net_io.c: p = p->next;
net_io.c: p->next = c->next;
Binary file .git/objects/pack/pack-bf860161866f3e6c65f8f17c93e90565fe339dff.idx matches
Binary file .git/objects/pack/pack-bf860161866f3e6c65f8f17c93e90565fe339dff.pack matches
AircraftList.cpp: if (p->addr == addr) return (p);
AircraftList.cpp: p = p->next;
AircraftList.cpp: p->live = 0;
AircraftList.cpp: p = p->next;
AircraftList.cpp: p->next = head;
AircraftList.cpp: p->prev_seen = p->seen;
AircraftList.cpp: p->live = 1;
AircraftList.cpp: if(p->seen == a->seen) {
AircraftList.cpp: p->seen = a->seen;
AircraftList.cpp: p->msSeen = now();
AircraftList.cpp: if((p->seen - p->prev_seen) > 0) {
AircraftList.cpp: p->messageRate = 1.0 / (double)(p->seen - p->prev_seen);
AircraftList.cpp: memcpy(p->flight, a->flight, sizeof(p->flight));
AircraftList.cpp: memcpy(p->signalLevel, a->signalLevel, sizeof(p->signalLevel));
AircraftList.cpp: p->altitude = a->altitude;
AircraftList.cpp: p->speed = a->speed;
AircraftList.cpp: p->track = a->track;
AircraftList.cpp: p->vert_rate = a->vert_rate;
AircraftList.cpp: p->lon = a->lon;
AircraftList.cpp: p->lat = a->lat;
AircraftList.cpp: if(p->seenLatLon < a->seenLatLon) {
AircraftList.cpp: p->msSeenLatLon = now();
AircraftList.cpp: // p->oldIdx = (p->oldIdx+1) % 32;
AircraftList.cpp: // p->oldLon[p->oldIdx] = p->lon;
AircraftList.cpp: // p->oldLat[p->oldIdx] = p->lat;
AircraftList.cpp: p->lonHistory.push_back(p->lon);
AircraftList.cpp: p->latHistory.push_back(p->lat);
AircraftList.cpp: p->headingHistory.push_back(p->track);
AircraftList.cpp: p->timestampHistory.push_back(p->msSeenLatLon);
AircraftList.cpp: // p->oldHeading[p->oldIdx] = p->track;
AircraftList.cpp: // p->oldSeen[p->oldIdx] = p->seenLatLon;
AircraftList.cpp: p->seenLatLon = a->seenLatLon;
AircraftList.cpp: if(!p->live) {
AircraftList.cpp: head = p->next;
AircraftList.cpp: prev->next = p->next;
AircraftList.cpp: p = p->next;
Binary file mapdata.bin matches
Binary file viz1090 matches
View.cpp: if(p->lonHistory.empty()) {
View.cpp: std::vector<float>::iterator lon_idx = p->lonHistory.begin();
View.cpp: std::vector<float>::iterator lat_idx = p->latHistory.begin();
View.cpp: std::vector<float>::iterator heading_idx = p->headingHistory.begin();
View.cpp: int idx = p->lonHistory.size();
View.cpp: for(; std::next(lon_idx) != p->lonHistory.end(); ++lon_idx, ++lat_idx, ++heading_idx) {
View.cpp: // float age = pow(1.0 - (float)idx / (float)p->lonHistory.size(), 2.2);
View.cpp: float age = 1.0 - (float)idx / (float)p->lonHistory.size();
View.cpp: unsigned char * pSig = p->signalLevel;
View.cpp: if(elapsed(p->msSeen) < 1024) {
View.cpp: seenFade = (Uint8) (255.0 - elapsed(p->msSeen) / 4.0);
View.cpp: if(elapsed(p->msSeenLatLon) < 1024) {
View.cpp: seenFade = (Uint8) (255.0 - elapsed(p->msSeenLatLon) / 4.0);
View.cpp: if(elapsed(p->msSeenLatLon) < 500) {
View.cpp: circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0));
View.cpp: if(p->pressure * screen_width < pressure_scale) {
View.cpp: drawSignalMarks(p, p->x, p->y);
View.cpp: maxCharCount = snprintf(flight,10," %s", p->flight);
View.cpp: drawStringBG(flight, p->x, p->y, mapBoldFont, white, black);
View.cpp: //roundedRectangleRGBA(renderer, p->x, p->y, p->x + maxCharCount * mapFontWidth, p->y + mapFontHeight, ROUND_RADIUS, white.r, white.g, white.b, SDL_ALPHA_OPAQUE);
View.cpp: //drawString(flight, p->x, p->y, mapBoldFont, white);
View.cpp: if(p->pressure * screen_width < 0.5f * pressure_scale) {
View.cpp: currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828));
View.cpp: currentCharCount = snprintf(alt,10," %d'", p->altitude);
View.cpp: drawStringBG(alt, p->x, p->y + currentLine * mapFontHeight, mapFont, grey, black);
View.cpp: currentCharCount = snprintf(speed,10," %dkm/h", (int) (p->speed * 1.852));
View.cpp: currentCharCount = snprintf(speed,10," %dmph", p->speed);
View.cpp: drawStringBG(speed, p->x, p->y + currentLine * mapFontHeight, mapFont, grey, black);
View.cpp: Sint16 vx[4] = {p->cx, p->cx + (p->x - p->cx) / 2, p->x, p->x};
View.cpp: Sint16 vy[4] = {p->cy, p->cy + (p->y - p->cy) / 2, p->y - mapFontHeight, p->y};
View.cpp: if(p->cy > p->y + currentLine * mapFontHeight) {
View.cpp: vy[2] = p->y + currentLine * mapFontHeight + mapFontHeight;
View.cpp: vy[3] = p->y + currentLine * mapFontHeight;
View.cpp: thickLineRGBA(renderer,p->x,p->y,p->x,p->y+currentLine*mapFontHeight,screen_uiscale,200,200,200,SDL_ALPHA_OPAQUE);
View.cpp: p->w = maxCharCount * mapFontWidth;
View.cpp: p->h = currentLine * mapFontHeight;
View.cpp: int x = p->cx - 20;
View.cpp: int y = p->cy + 22;
View.cpp: if(elapsed(p->msSeenLatLon) < 500) {
View.cpp: circleRGBA(renderer, p->cx, p->cy, elapsed(p->msSeenLatLon) * screen_width / (8192), 255,255, 255, 64 - (uint8_t)(64.0 * elapsed(p->msSeenLatLon) / 500.0));
View.cpp: maxCharCount = snprintf(flight,10," %s", p->flight);
View.cpp: //roundedRectangleRGBA(renderer, p->x, p->y, p->x + maxCharCount * mapFontWidth, p->y + mapFontHeight, ROUND_RADIUS, white.r, white.g, white.b, SDL_ALPHA_OPAQUE);
View.cpp: //drawString(flight, p->x, p->y, mapBoldFont, white);
View.cpp: currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828));
View.cpp: currentCharCount = snprintf(alt,10," %d'", p->altitude);
View.cpp: currentCharCount = snprintf(speed,10," %dkm/h", (int) (p->speed * 1.852));
View.cpp: currentCharCount = snprintf(speed,10," %dmph", p->speed);
View.cpp: int p_left = p->x - 10 * screen_uiscale;
View.cpp: int p_right = p->x + p->w + 10 * screen_uiscale;
View.cpp: int p_top = p->y - 10 * screen_uiscale;
View.cpp: int p_bottom = p->y + p->h + 10 * screen_uiscale;
View.cpp: //rectangleRGBA(renderer, p->x, p->y, p->x + p->w, p->y + p->h, 255,0,0, SDL_ALPHA_OPAQUE);
View.cpp: //lineRGBA(renderer, p->cx, p->cy, p->x, p->y, 0,255,0, SDL_ALPHA_OPAQUE);
View.cpp: p->ddox = 0;
View.cpp: p->ddoy = 0;
View.cpp: float o_mag = sqrt(p->ox*p->ox + p->oy*p->oy);
View.cpp: p->ddox -= p->ox / o_mag * spring_force * (o_mag - spring_length);
View.cpp: p->ddoy -= p->oy / o_mag * spring_force * (o_mag - spring_length);
View.cpp: p->ox += (float)(10 * screen_uiscale - p_left);
View.cpp: p->ox -= (float)(p_right - (screen_width - 10 * screen_uiscale));
View.cpp: p->oy += (float)(10 * screen_uiscale - p_top);
View.cpp: p->oy -= (float)(p_bottom - (screen_height - 10 * screen_uiscale));
View.cpp: p->pressure = 0;
View.cpp: if(check_p->addr != p->addr) {
View.cpp: int check_left = check_p->x - 5 * screen_uiscale;
View.cpp: int check_right = check_p->x + check_p->w + 5 * screen_uiscale;
View.cpp: int check_top = check_p->y - 5 * screen_uiscale;
View.cpp: int check_bottom = check_p->y + check_p->h + 5 * screen_uiscale;
View.cpp: p->pressure += 1.0f / ((check_p->cx - p->cx) * (check_p->cx - p->cx) + (check_p->cy - p->cy) * (check_p->cy - p->cy));
View.cpp: check_p->ddox -= label_force * (float)(check_left - p_right);
View.cpp: check_p->ddox -= label_force * (float)(check_right - p_left);
View.cpp: check_p->ddoy -= label_force * (float)(check_top - p_bottom);
View.cpp: check_p->ddoy -= label_force * (float)(check_bottom - p_top);
View.cpp: p_left = p->x - 5 * screen_uiscale;
View.cpp: p_right = p->x + 5 * screen_uiscale;
View.cpp: p_top = p->y - 5 * screen_uiscale;
View.cpp: p_bottom = p->y + 5 * screen_uiscale;
View.cpp: int check_left = check_p->x - 5 * screen_uiscale;
View.cpp: int check_right = check_p->x + check_p->w + 5 * screen_uiscale;
View.cpp: int check_top = check_p->y - 5 * screen_uiscale;
View.cpp: int check_bottom = check_p->y + check_p->h + 5 * screen_uiscale;
View.cpp: check_p->ddox -= plane_force * (float)(check_left - p_right);
View.cpp: check_p->ddox -= plane_force * (float)(check_right - p_left);
View.cpp: check_p->ddoy -= plane_force * (float)(check_top - p_bottom);
View.cpp: check_p->ddoy -= plane_force * (float)(check_bottom - p_top);
View.cpp: p = p->next;
View.cpp: p->dox += p->ddox;
View.cpp: p->doy += p->ddoy;
View.cpp: p->dox *= damping_force;
View.cpp: p->doy *= damping_force;
View.cpp: if(fabs(p->dox) > 10.0f) {
View.cpp: p->dox = sign(p->dox) * 10.0f;
View.cpp: if(fabs(p->doy) > 10.0f) {
View.cpp: p->doy = sign(p->doy) * 10.0f;
View.cpp: if(fabs(p->dox) < 1.0f) {
View.cpp: p->dox = 0;
View.cpp: if(fabs(p->doy) < 1.0f) {
View.cpp: p->doy = 0;
View.cpp: p->ox += p->dox;
View.cpp: p->oy += p->doy;
View.cpp: p->x = p->cx + (int)round(p->ox);
View.cpp: p->y = p->cy + (int)round(p->oy);
View.cpp: p = p->next;
View.cpp: p = p->next;
View.cpp: if (p->lon && p->lat) {
View.cpp: pxFromLonLat(&dx, &dy, p->lon, p->lat);
View.cpp: if(p->created == 0) {
View.cpp: p->created = now();
View.cpp: float age_ms = (float)elapsed(p->created);
View.cpp: if(p->msSeenLatLon > p->timestampHistory.back()) {
View.cpp: pxFromLonLat(&dx, &dy, p->lonHistory.back(), p->latHistory.back());
View.cpp: float velx = (x - oldx) / (p->msSeenLatLon - p->timestampHistory.back());
View.cpp: float vely = (y - oldy) / (p->msSeenLatLon - p->timestampHistory.back());
View.cpp: usex = x + elapsed(p->msSeenLatLon) * velx;
View.cpp: usey = y + elapsed(p->msSeenLatLon) * vely;
View.cpp: planeColor = lerpColor(style.planeColor, style.planeGoneColor, float(elapsed_s(p->seen)) / (float) DISPLAY_ACTIVE);
View.cpp: drawPlaneOffMap(x, y, &(p->cx), &(p->cy), planeColor);
View.cpp: drawPlaneIcon(usex, usey, p->track, planeColor);
View.cpp: p->cx = usex;
View.cpp: p->cy = usey;
View.cpp: p = p->next;
View.cpp: if((p->cx - x) * (p->cx - x) + (p->cy - y) * (p->cy - y) < 900) {
View.cpp: if((p->cx - x) * (p->cx - x) + (p->cy - y) * (p->cy - y) <
View.cpp: p = p->next;
all.svg:<g id="00140" postname="Wyman Twp-Franklin Cnty" stateabbr="ME" cntyname="Franklin" cafintrst="One Upstream Watershed" pop2000="0" hostcount="3" lat="45.129440" lon="-70.357120">
AppData.cpp: unsigned char * pSig = p->signalLevel;
AppData.cpp: if (p->lon && p->lat) {
AppData.cpp: msgRateAccumulate += p->messageRate;
AppData.cpp: p = p->next;