diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index c46565fe2d..b406efad72 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -529,39 +529,34 @@ void AnnotatedCameraWidget::drawLaneLines(QPainter &painter, const UIState *s) { QVector right_points = scene.track_vertices.mid(0, track_vertices_len / 2); qDebug() << right_points.length(); -// float gradient_height = bg.finalStop().y(); for (int i = 0; i < right_points.length(); i++) { const auto &acceleration = sm["uiPlan"].getUiPlan().getAccel(); - float acceleration_future = 0; - if (i >= acceleration.size()) { - break; + if (i >= acceleration.size()) break; + double t = millis_since_boot(); + double dt = millis_since_boot() - t; + qDebug() << "Took" << dt << "ms to get accel"; + qDebug() << "Using acceleration:" << acceleration[i]; + + // Some points are out of frame + if (right_points[i].y() < 0 || right_points[i].y() > height()) { + continue; } - acceleration_future = acceleration[i]; - qDebug() << "Using acceleration:" << acceleration_future; // flip so 0 is bottom of frame float lin_grad_point = (height() - right_points[i].y()) / height(); qDebug() << right_points[i] << right_points[i].y() << lin_grad_point; - // Some points are out of frame - // TODO: tho maybe it makes sense to clip instead, so gradient is correct. or no clip/skip at all - if (lin_grad_point < 0) { - continue; - } // speed up: 120, slow down: 0 - float end_hue = fmax(fmin(60 + acceleration_future * 35, 120), 0); + float path_hue = fmax(fmin(60 + acceleration[i] * 35, 120), 0); + // FIXME: painter.drawPolygon can be slow if hue is not rounded + path_hue = int(path_hue * 100 + 0.5) / 100; - float saturation = std::abs(acceleration_future * 1.5); - saturation = saturation > 1 ? 1. : saturation; - float lightness = lerp(0.95, 0.62, saturation); - float alpha = interp1d(lin_grad_point, 0.75/2.0, 0.75, 0.4, 0.0); // matches behavior before for alpha fade + float saturation = fmin(fabs(acceleration[i] * 1.5), 1); + float lightness = lerp(0.95, 0.62, saturation); // lighter when grey + float alpha = interp1d(lin_grad_point, 0.75 / 2., 0.75, 0.4, 0.0); // matches behavior before for alpha fade qDebug() << "saturation:" << saturation << "lightness:" << lightness << "alpha:" << alpha; - // FIXME: painter.drawPolygon can be slow if hue is not rounded - end_hue = int(end_hue * 100 + 0.5) / 100; -// bg.setColorAt(lin_grad_point, QColor::fromHslF(end_hue / 360., 0.97, 0.56, 0.4)); - bg.setColorAt(lin_grad_point, QColor::fromHslF(end_hue / 360., saturation, lightness, alpha)); - + bg.setColorAt(lin_grad_point, QColor::fromHslF(path_hue / 360., saturation, lightness, alpha)); } } else {