feat:add speedL interface

This commit is contained in:
lgv 2026-03-11 16:23:23 +08:00
parent 777416d73b
commit 5a751bb0d8
96 changed files with 44894 additions and 1763 deletions

View File

@ -108,7 +108,6 @@ target_link_libraries(cmvr_es PRIVATE
cmvr_es::proto cmvr_es::proto
service service
${GLOG_LIBRARIES} ${GLOG_LIBRARIES}
gflags
jsoncpp jsoncpp
cmvr_es::utils cmvr_es::utils
cmvr_es::service cmvr_es::service

View File

@ -43,4 +43,9 @@ sudo apt-get install -y libx11-dev liblapack-dev libzbar-dev libpthread-stubs0-d
sudo apt-get install -y \ sudo apt-get install -y \
libusb-1.0-0-dev libudev-dev \ libusb-1.0-0-dev libudev-dev \
libglu1-mesa-dev libglu1-mesa-dev
# Matplot++
sudo apt install gnuplot-qt
``` ```

View File

@ -6,7 +6,6 @@ file(GLOB SRC
${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/CameraCapture.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/CameraCapture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/VideoFrameEncoder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/VideoFrameEncoder.cpp
${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/VideoWriter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/utils/ffmpeg/src/VideoWriter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/curve/src/s_curve.cpp ${CMAKE_CURRENT_SOURCE_DIR}/curve/src/s_curve.cpp
) )
@ -18,6 +17,7 @@ target_include_directories(common PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(common PUBLIC target_link_libraries(common PUBLIC
cmvr_es::proto cmvr_es::proto
glog
opencv_core opencv_core
opencv_imgproc opencv_imgproc
opencv_highgui opencv_highgui
@ -31,18 +31,33 @@ target_link_libraries(common PUBLIC
add_library(cmvr_es::common ALIAS common) add_library(cmvr_es::common ALIAS common)
install(TARGETS common LIBRARY DESTINATION lib) install(TARGETS common LIBRARY DESTINATION lib)
add_executable(image_display_test #add_executable(image_display_test
utils/visualization/image_display_test.cpp # utils/visualization/image_display_test.cpp
) #)
#
target_link_libraries(image_display_test #target_link_libraries(image_display_test
PRIVATE # PRIVATE
cmvr_es::common # cmvr_es::common
cmvr_es::perception # cmvr_es::perception
cmvr_es::device::realsense_camera # cmvr_es::device::realsense_camera
cmvr_es::proto # cmvr_es::proto
glog # glog
gtest # gtest
gtest_main # gtest_main
pthread # pthread
) #)
#
#add_executable(s_curve_test
# curve/src/s_curve_test.cpp
#)
#
#target_link_libraries(s_curve_test
# PRIVATE
# cmvr_es::common
# cmvr_es::proto
# glog
# gtest
# gtest_main
# pthread
# Matplot++::matplot
#)

View File

@ -3,9 +3,9 @@
// //
/** /**
* @file s_curve.h * @file s_curve.h
* @brief 7 S 线 * @brief S 线
* *
* 7 S 线 * 7 S 线
* 1. * 1.
* 2. * 2.
* 3. 0 * 3. 0
@ -14,16 +14,13 @@
* 6. * 6.
* 7. 0 * 7. 0
* *
* * profile
* -
* - MoveIt
* - max_velocity / max_acceleration / max_jerk
*/ */
#pragma once #pragma once
#include <cmath>
#include <algorithm> #include <algorithm>
#include <cmath>
#include <vector> #include <vector>
@ -61,42 +58,19 @@ struct SCurveProfile
double p0; // 初始位置 double p0; // 初始位置
double v0; // 初始速度 double v0; // 初始速度
double a0; // 初始加速度 double a0; // 初始加速度
double vf; // 终止速度
SCurveProfile() SCurveProfile()
: t1(0), t2(0), t3(0), t4(0), t5(0), t6(0), t7(0) : t1(0), t2(0), t3(0), t4(0), t5(0), t6(0), t7(0)
, total_time(0) , total_time(0)
, j_max(50.0), a_max(10.0), v_max(3.0) , j_max(50.0), a_max(10.0), v_max(3.0)
, distance(0), direction(1.0), v_cruise(0), a_limit(0) , distance(0), direction(1.0), v_cruise(0), a_limit(0)
, p0(0), v0(0), a0(0) , p0(0), v0(0), a0(0), vf(0)
{} {}
}; };
/** /**
* @brief S 线 * @brief S 线
*/
struct SCurveState
{
double position;
double velocity;
double acceleration;
double jerk;
// 目标跟踪
double target_position;
bool is_moving;
SCurveState()
: position(0), velocity(0), acceleration(0), jerk(0)
, target_position(0), is_moving(false)
{}
};
/**
* @brief S 线
*
*
* 1.
* 2.
*/ */
class SCurve class SCurve
{ {
@ -121,68 +95,6 @@ public:
*/ */
void getConstraints(double& max_velocity, double& max_acceleration, double& max_jerk) const; void getConstraints(double& max_velocity, double& max_acceleration, double& max_jerk) const;
/**
* @brief 使
* @param position
* @param velocity 0
* @param acceleration 0
*/
void initialize(double position, double velocity = 0.0, double acceleration = 0.0);
/**
* @brief
*/
void reset();
// ==================== 实时模式 ====================
/**
* @brief
* @param target_position
*/
void setTarget(double target_position);
/**
* @brief 使 S 线
* @param dt
* @return
*
* S 线
* 1.
* 2.
* 3.
* 4.
* 5.
*/
double update(double dt);
/**
* @brief
*/
const SCurveState& getState() const { return state_; }
/**
* @brief
*/
double getPosition() const { return state_.position; }
/**
* @brief
*/
double getVelocity() const { return state_.velocity; }
/**
* @brief
*/
double getAcceleration() const { return state_.acceleration; }
/**
* @brief
*/
bool isMoving() const { return state_.is_moving; }
// ==================== 轨迹模式 ====================
/** /**
* @brief S 线 * @brief S 线
* @param start_position * @param start_position
@ -218,6 +130,14 @@ public:
*/ */
double getAccelerationAtTime(const SCurveProfile& profile, double t) const; double getAccelerationAtTime(const SCurveProfile& profile, double t) const;
/**
* @brief t
* @param profile S 线
* @param t
* @return t
*/
double getJerkAtTime(const SCurveProfile& profile, double t) const;
/** /**
* @brief * @brief
* @param profile S 线 * @param profile S 线
@ -232,71 +152,16 @@ public:
std::vector<double>& accelerations) const; std::vector<double>& accelerations) const;
private: private:
// 运动约束
double max_velocity_; double max_velocity_;
double max_acceleration_; double max_acceleration_;
double max_jerk_; double max_jerk_;
// 实时状态
SCurveState state_;
// 实时模式的位置跟踪增益
double position_gain_;
// 小量阈值
static constexpr double EPSILON = 1e-9; static constexpr double EPSILON = 1e-9;
static constexpr double VELOCITY_THRESHOLD = 1e-6; static constexpr double VELOCITY_THRESHOLD = 1e-6;
static constexpr double POSITION_THRESHOLD = 1e-7;
/**
* @brief 0
*/
double calculateStoppingTime(double velocity, double acceleration) const;
/**
* @brief S 线
*/
double calculateStoppingDistance(double velocity, double acceleration) const;
/**
* @brief
*/
double computeJerkLimitedAcceleration(double current_acc, double desired_acc, double dt) const;
/**
* @brief
*/
double computeSegmentJerk(const SCurveProfile& profile, double t) const; double computeSegmentJerk(const SCurveProfile& profile, double t) const;
/**
* @brief
*/
void calculateShortProfile(SCurveProfile& profile) const; void calculateShortProfile(SCurveProfile& profile) const;
/**
* @brief
*/
void calculateLongProfile(SCurveProfile& profile) const; void calculateLongProfile(SCurveProfile& profile) const;
/**
* @brief
*/
static double clamp(double value, double min_val, double max_val)
{
return std::max(min_val, std::min(max_val, value));
}
/**
* @brief
*/
static double sign(double value)
{
if (value > EPSILON) return 1.0;
if (value < -EPSILON) return -1.0;
return 0.0;
}
}; };
} // namespace } // namespace cmvr

View File

@ -15,15 +15,11 @@
namespace cmvr namespace cmvr
{ {
SCurve::SCurve(double max_velocity, double max_acceleration, double max_jerk) SCurve::SCurve(double max_velocity, double max_acceleration, double max_jerk)
: max_velocity_(max_velocity) : max_velocity_(std::abs(max_velocity))
, max_acceleration_(max_acceleration) , max_acceleration_(std::abs(max_acceleration))
, max_jerk_(max_jerk) , max_jerk_(std::abs(max_jerk))
, position_gain_(10.0) // 位置跟踪增益 {}
{
reset();
}
void SCurve::setConstraints(double max_velocity, double max_acceleration, double max_jerk) void SCurve::setConstraints(double max_velocity, double max_acceleration, double max_jerk)
{ {
@ -39,201 +35,8 @@ void SCurve::getConstraints(double& max_velocity, double& max_acceleration, doub
max_jerk = max_jerk_; max_jerk = max_jerk_;
} }
void SCurve::initialize(double position, double velocity, double acceleration)
{
state_.position = position;
state_.velocity = velocity;
state_.acceleration = acceleration;
state_.jerk = 0.0;
state_.target_position = position;
state_.is_moving = false;
}
void SCurve::reset()
{
state_ = SCurveState();
}
void SCurve::setTarget(double target_position)
{
state_.target_position = target_position;
}
double SCurve::update(double dt)
{
if (dt <= 0.0 || dt > 0.1) {
return state_.position;
}
// 计算位置误差
double position_error = state_.target_position - state_.position;
// 判断是否已足够接近目标
if (std::abs(position_error) < POSITION_THRESHOLD &&
std::abs(state_.velocity) < VELOCITY_THRESHOLD) {
state_.velocity = 0.0;
state_.acceleration = 0.0;
state_.jerk = 0.0;
state_.is_moving = false;
state_.position = state_.target_position;
return state_.position;
}
state_.is_moving = true;
// ==================== S 曲线实时算法 ====================
// 通过加加速度限制实现实时 S 曲线控制
// Step 1根据位置误差计算期望速度
// 使用比例控制并施加速度上限
double desired_velocity = position_gain_ * position_error;
desired_velocity = clamp(desired_velocity, -max_velocity_, max_velocity_);
// Step 2根据当前速度估算制动距离考虑 S 曲线减速剖面)
double stopping_distance = calculateStoppingDistance(state_.velocity, state_.acceleration);
// Step 3判断是否需要开始减速
double direction = sign(position_error);
double velocity_direction = sign(state_.velocity);
// 如果正在远离目标,或距离不足以刹停,则需要减速
bool need_decelerate = false;
if (velocity_direction != 0 && velocity_direction != direction) {
// 运动方向错误:必须减速
need_decelerate = true;
} else if (std::abs(position_error) <= std::abs(stopping_distance) * 1.1) {
// 接近目标:提前开始减速(留 10% 裕量)
need_decelerate = true;
}
// Step 4计算期望加速度
double desired_acceleration;
if (need_decelerate) {
// 减速:加速度方向应与速度相反
if (std::abs(state_.velocity) < VELOCITY_THRESHOLD) {
desired_acceleration = 0.0;
} else {
desired_acceleration = -sign(state_.velocity) * max_acceleration_;
}
} else {
// 朝目标方向加速
double velocity_error = desired_velocity - state_.velocity;
desired_acceleration = clamp(velocity_error / dt, -max_acceleration_, max_acceleration_);
}
// Step 5施加加加速度限制S 曲线平滑性的关键)
double new_acceleration = computeJerkLimitedAcceleration(
state_.acceleration, desired_acceleration, dt);
// Step 6更新加加速度
state_.jerk = (new_acceleration - state_.acceleration) / dt;
// Step 7更新加速度
state_.acceleration = new_acceleration;
// Step 8在加速度限制下更新速度
double new_velocity = state_.velocity + state_.acceleration * dt;
new_velocity = clamp(new_velocity, -max_velocity_, max_velocity_);
state_.velocity = new_velocity;
// Step 9更新位置
// 使用梯形积分提高精度
double avg_velocity = (state_.velocity + new_velocity) * 0.5;
state_.position += avg_velocity * dt;
// Step 10非常接近目标且速度很小则直接夹紧到目标
if (std::abs(state_.target_position - state_.position) < POSITION_THRESHOLD * 10 &&
std::abs(state_.velocity) < VELOCITY_THRESHOLD * 10) {
state_.position = state_.target_position;
}
return state_.position;
}
double SCurve::calculateStoppingTime(double velocity, double acceleration) const
{
// 将加速度减到 0 所需时间
double t_jerk = std::abs(acceleration) / max_jerk_;
// 加加速度阶段的速度变化量
double v_change_jerk = 0.5 * std::abs(acceleration) * t_jerk;
// 加加速度阶段结束后的剩余速度
double v_remaining = std::abs(velocity) - v_change_jerk;
if (v_remaining <= 0) {
// 仅靠加加速度阶段即可停止
return std::sqrt(2.0 * std::abs(velocity) / max_jerk_);
}
// 需要进入匀减速阶段
// 匀减速阶段持续时间
double t_const = v_remaining / max_acceleration_;
// 最后一个加加速度阶段:将加速度带回到 0
double t_jerk_final = max_acceleration_ / max_jerk_;
return t_jerk + t_const + t_jerk_final;
}
double SCurve::calculateStoppingDistance(double velocity, double acceleration) const
{
double v = std::abs(velocity);
double a = std::abs(acceleration);
if (v < VELOCITY_THRESHOLD) {
return 0.0;
}
// 简化版 S 曲线制动距离估算
// 完整推导需要考虑 7 个阶段;实时控制中使用近似即可获得平滑减速效果
// 将加速度减到 0 的时间(加加速度阶段 1
double t1 = a / max_jerk_;
double d1 = v * t1 + 0.5 * a * t1 * t1 - (1.0/6.0) * max_jerk_ * t1 * t1 * t1;
double v1 = v + a * t1 - 0.5 * max_jerk_ * t1 * t1;
if (v1 <= 0) {
// 在第一段加加速度阶段内停止
return std::abs(d1);
}
// 匀减速阶段
double t2 = (v1 - max_acceleration_ * max_acceleration_ / (2.0 * max_jerk_)) / max_acceleration_;
if (t2 < 0) t2 = 0;
double d2 = v1 * t2 - 0.5 * max_acceleration_ * t2 * t2;
double v2 = v1 - max_acceleration_ * t2;
// 最后一个加加速度阶段
double t3 = max_acceleration_ / max_jerk_;
double d3 = v2 * t3 - 0.5 * max_acceleration_ * t3 * t3 + (1.0/6.0) * max_jerk_ * t3 * t3 * t3;
double total_distance = d1 + d2 + d3;
// 增加安全裕量
return std::abs(total_distance) * 1.2;
}
double SCurve::computeJerkLimitedAcceleration(double current_acc, double desired_acc, double dt) const
{
double acc_change = desired_acc - current_acc;
double max_acc_change = max_jerk_ * dt;
// 按加加速度上限夹紧加速度变化量
acc_change = clamp(acc_change, -max_acc_change, max_acc_change);
double new_acc = current_acc + acc_change;
// 同时夹紧加速度本身
new_acc = clamp(new_acc, -max_acceleration_, max_acceleration_);
return new_acc;
}
// ==================== 轨迹模式实现 ====================
SCurveProfile SCurve::calculateProfile(double start_position, double end_position, SCurveProfile SCurve::calculateProfile(double start_position, double end_position,
double start_velocity, double end_velocity [[maybe_unused]]) double start_velocity, double end_velocity)
{ {
SCurveProfile profile; SCurveProfile profile;
profile.j_max = max_jerk_; profile.j_max = max_jerk_;
@ -242,6 +45,7 @@ SCurveProfile SCurve::calculateProfile(double start_position, double end_positio
profile.p0 = start_position; profile.p0 = start_position;
profile.v0 = start_velocity; profile.v0 = start_velocity;
profile.a0 = 0.0; // Assume starting from zero acceleration profile.a0 = 0.0; // Assume starting from zero acceleration
profile.vf = end_velocity;
double displacement = end_position - start_position; double displacement = end_position - start_position;
profile.distance = std::abs(displacement); profile.distance = std::abs(displacement);
@ -253,32 +57,128 @@ SCurveProfile SCurve::calculateProfile(double start_position, double end_positio
return profile; return profile;
} }
// 达到最大加速度所需时间(加加速度阶段) const double start_speed = profile.direction * start_velocity;
double t_j = profile.a_max / profile.j_max; const double end_speed = profile.direction * end_velocity;
if (start_speed < -VELOCITY_THRESHOLD || end_speed < -VELOCITY_THRESHOLD) {
profile.total_time = 0.0;
return profile;
}
// 单个加加速度阶段获得的速度增量 if (std::abs(start_speed) > VELOCITY_THRESHOLD ||
double v_j = 0.5 * profile.j_max * t_j * t_j; std::abs(end_speed) > VELOCITY_THRESHOLD) {
auto calc_transition = [&](double v_from, double v_to,
double& t_j, double& t_a,
double& duration, double& distance) {
t_j = 0.0;
t_a = 0.0;
duration = 0.0;
distance = 0.0;
// 加速阶段(含两个加加速度段)的位移 const double dv = std::abs(v_to - v_from);
// 假设能够达到最大加速度 if (dv <= 1e-12 || profile.a_max <= 1e-12 || profile.j_max <= 1e-12) {
double d_acc = v_j * t_j + profile.a_max * t_j * t_j + v_j; return;
}
// 判断是否能达到最大速度 const double dv_switch = profile.a_max * profile.a_max / profile.j_max;
double v_acc = 2 * v_j; // Velocity gained during full acceleration phase if (dv < dv_switch) {
t_j = std::sqrt(dv / profile.j_max);
if (v_acc >= profile.v_max) { t_a = 0.0;
// 达不到最大加速度:三角形剖面
calculateShortProfile(profile);
} else { } else {
// 判断是否能在半程之前达到最大速度 t_j = profile.a_max / profile.j_max;
double d_to_vmax = d_acc + (profile.v_max - v_acc) * (profile.v_max - v_acc) / (2.0 * profile.a_max); t_a = dv / profile.a_max - t_j;
}
if (2.0 * d_to_vmax > profile.distance) { duration = 2.0 * t_j + t_a;
// 达不到最大速度:梯形加速度剖面 distance = 0.5 * (v_from + v_to) * duration;
calculateShortProfile(profile); };
const double v_cap = std::max({profile.v_max, start_speed, end_speed});
const double v_peak_min = std::max(start_speed, end_speed);
double acc_tj = 0.0, acc_ta = 0.0, acc_duration = 0.0, acc_distance = 0.0;
double dec_tj = 0.0, dec_ta = 0.0, dec_duration = 0.0, dec_distance = 0.0;
calc_transition(start_speed, v_peak_min,
acc_tj, acc_ta, acc_duration, acc_distance);
calc_transition(v_peak_min, end_speed,
dec_tj, dec_ta, dec_duration, dec_distance);
const double d_min = acc_distance + dec_distance;
if (profile.distance + EPSILON < d_min) {
profile.total_time = 0.0;
return profile;
}
calc_transition(start_speed, v_cap,
acc_tj, acc_ta, acc_duration, acc_distance);
calc_transition(v_cap, end_speed,
dec_tj, dec_ta, dec_duration, dec_distance);
const double d_cap = acc_distance + dec_distance;
double v_peak = v_cap;
double t4 = 0.0;
if (profile.distance > d_cap + EPSILON) {
t4 = (profile.distance - d_cap) / std::max(v_peak, EPSILON);
} else { } else {
// 可达到最大速度:完整 S 曲线 double lo = v_peak_min;
double hi = v_cap;
for (int iter = 0; iter < 80; ++iter) {
const double mid = 0.5 * (lo + hi);
double mid_acc_tj = 0.0, mid_acc_ta = 0.0, mid_acc_duration = 0.0, mid_acc_distance = 0.0;
double mid_dec_tj = 0.0, mid_dec_ta = 0.0, mid_dec_duration = 0.0, mid_dec_distance = 0.0;
calc_transition(start_speed, mid,
mid_acc_tj, mid_acc_ta, mid_acc_duration, mid_acc_distance);
calc_transition(mid, end_speed,
mid_dec_tj, mid_dec_ta, mid_dec_duration, mid_dec_distance);
const double d_mid = mid_acc_distance + mid_dec_distance;
if (d_mid < profile.distance) {
lo = mid;
} else {
hi = mid;
}
}
v_peak = hi;
calc_transition(start_speed, v_peak,
acc_tj, acc_ta, acc_duration, acc_distance);
calc_transition(v_peak, end_speed,
dec_tj, dec_ta, dec_duration, dec_distance);
}
profile.t1 = acc_tj;
profile.t2 = acc_ta;
profile.t3 = acc_tj;
profile.t4 = t4;
profile.t5 = dec_tj;
profile.t6 = dec_ta;
profile.t7 = dec_tj;
profile.v_cruise = v_peak;
profile.a_limit = std::max(profile.j_max * profile.t1, profile.j_max * profile.t5);
profile.total_time = profile.t1 + profile.t2 + profile.t3 + profile.t4 +
profile.t5 + profile.t6 + profile.t7;
return profile;
}
const double j = profile.j_max;
const double a = profile.a_max;
const double v = profile.v_max;
const double t_j_a = a / j;
if (v < a * t_j_a) {
const double t_j_v = std::sqrt(v / j);
const double s_min = 2.0 * j * t_j_v * t_j_v * t_j_v;
if (profile.distance > s_min + EPSILON) {
calculateLongProfile(profile); calculateLongProfile(profile);
} else {
calculateShortProfile(profile);
}
} else {
const double t_a_v = v / a - t_j_a;
const double s_half_v =
a * (t_j_a * t_j_a + 1.5 * t_j_a * t_a_v + 0.5 * t_a_v * t_a_v);
const double s_min = 2.0 * s_half_v;
if (profile.distance > s_min + EPSILON) {
calculateLongProfile(profile);
} else {
calculateShortProfile(profile);
} }
} }
@ -287,24 +187,16 @@ SCurveProfile SCurve::calculateProfile(double start_position, double end_positio
void SCurve::calculateShortProfile(SCurveProfile& profile) const void SCurve::calculateShortProfile(SCurveProfile& profile) const
{ {
// 短距离情况下,可能达不到最大速度,甚至达不到最大加速度 // 短距离无巡航段t4 = 0与 moveL_SCurveLocal 中的 SCurveProfile1D 保持一致。
// 使用对称剖面t1=t3=t5=t7t2=t6t4=0 const double j = profile.j_max;
const double a = profile.a_max;
const double v = profile.v_max;
const double d = profile.distance;
const double t_j_a = a / j;
double j = profile.j_max; if (v < a * t_j_a) {
double a = profile.a_max; // 达不到 a_max极短距离时只有 4 个 jerk 段。
// double v = profile.v_max; // 短剖面不会达到最大速度,因此不使用 const double t1 = std::cbrt(d / (2.0 * j));
double d = profile.distance;
// 达到最大加速度所需时间
double t_j = a / j;
// 判断是否能达到最大加速度
// 纯加加速度剖面t1=t3无匀加速的位移
double d_jerk_only = j * t_j * t_j * t_j / 3.0;
if (d < 2.0 * d_jerk_only) {
// 极短距离:纯加加速度剖面
double t1 = std::cbrt(d * 1.5 / j);
profile.t1 = t1; profile.t1 = t1;
profile.t2 = 0.0; profile.t2 = 0.0;
profile.t3 = t1; profile.t3 = t1;
@ -312,46 +204,36 @@ void SCurve::calculateShortProfile(SCurveProfile& profile) const
profile.t5 = t1; profile.t5 = t1;
profile.t6 = 0.0; profile.t6 = 0.0;
profile.t7 = t1; profile.t7 = t1;
profile.v_cruise = j * t1 * t1; // 峰值速度 profile.v_cruise = j * t1 * t1;
profile.a_limit = j * t1; // 峰值加速度 profile.a_limit = j * t1;
} else { } else {
// 需要匀加速阶段 // 能达到 a_max但达不到 v_max求无巡航的匀加速持续时间。
// 在位移约束下求解 t1 与 t2 const double D = t_j_a * t_j_a + 4.0 * (d / a);
// d = 2 * (v_j * t_j + 0.5 * a * t_j^2 + a * t_a * t_j + 0.5 * a * t_a^2) double t2 = (-3.0 * t_j_a + std::sqrt(std::max(0.0, D))) * 0.5;
profile.t1 = t_j;
profile.t3 = t_j;
profile.t5 = t_j;
profile.t7 = t_j;
// t1 结束时速度
double v1 = 0.5 * j * t_j * t_j;
// 4 个加加速度段覆盖的位移
double d_jerk = 4.0 * (v1 * t_j / 2.0 + j * t_j * t_j * t_j / 6.0);
// 匀加速/匀减速阶段的剩余位移
double d_const = d - d_jerk;
// 求解 t2匀加速时间
// 使用一元二次方程
double A = a;
double B = 2.0 * v1 + a * t_j;
double C = -d_const / 2.0;
double discriminant = B * B - 4.0 * A * C;
if (discriminant < 0) discriminant = 0;
double t2 = (-B + std::sqrt(discriminant)) / (2.0 * A);
if (t2 < 0) t2 = 0;
if (t2 < 0.0) {
const double t1 = std::cbrt(d / (2.0 * j));
profile.t1 = t1;
profile.t2 = 0.0;
profile.t3 = t1;
profile.t4 = 0.0;
profile.t5 = t1;
profile.t6 = 0.0;
profile.t7 = t1;
profile.v_cruise = j * t1 * t1;
profile.a_limit = j * t1;
} else {
profile.t1 = t_j_a;
profile.t2 = t2; profile.t2 = t2;
profile.t3 = t_j_a;
profile.t4 = 0.0;
profile.t5 = t_j_a;
profile.t6 = t2; profile.t6 = t2;
profile.t4 = 0.0; // No cruise phase profile.t7 = t_j_a;
profile.v_cruise = a * (t2 + t_j_a);
profile.v_cruise = v1 + a * (t_j + t2);
profile.a_limit = a; profile.a_limit = a;
} }
}
profile.total_time = profile.t1 + profile.t2 + profile.t3 + profile.t4 + profile.total_time = profile.t1 + profile.t2 + profile.t3 + profile.t4 +
profile.t5 + profile.t6 + profile.t7; profile.t5 + profile.t6 + profile.t7;
@ -359,46 +241,43 @@ void SCurve::calculateShortProfile(SCurveProfile& profile) const
void SCurve::calculateLongProfile(SCurveProfile& profile) const void SCurve::calculateLongProfile(SCurveProfile& profile) const
{ {
// 含巡航段的完整 7 段式 S 曲线 // 含巡航段的完整 7 段式 S 曲线;与 SCurveProfile1D 的 full-profile 公式一致。
double j = profile.j_max; const double j = profile.j_max;
double a = profile.a_max; const double a = profile.a_max;
double v = profile.v_max; const double v = profile.v_max;
double d = profile.distance; const double d = profile.distance;
const double t_j_a = a / j;
// 加加速度段持续时间 if (v < a * t_j_a) {
double t_j = a / j; // 达不到 a_max但可以达到 v_max 并进入巡航。
const double t_j_v = std::sqrt(v / j);
const double s_min = 2.0 * j * t_j_v * t_j_v * t_j_v;
profile.t1 = t_j_v;
profile.t2 = 0.0;
profile.t3 = t_j_v;
profile.t4 = std::max(0.0, (d - s_min) / v);
profile.t5 = t_j_v;
profile.t6 = 0.0;
profile.t7 = t_j_v;
profile.v_cruise = v;
profile.a_limit = j * t_j_v;
} else {
// 能达到 a_max 和 v_max。
const double t_a = v / a - t_j_a;
const double s_half =
a * (t_j_a * t_j_a + 1.5 * t_j_a * t_a + 0.5 * t_a * t_a);
const double s_min = 2.0 * s_half;
// 加速阶段加加速度段获得的速度增量 profile.t1 = t_j_a;
double v_j = 0.5 * j * t_j * t_j;
// 匀加速达到最大速度所需时间
double t_a = (v - 2.0 * v_j) / a;
if (t_a < 0) t_a = 0;
profile.t1 = t_j;
profile.t2 = t_a; profile.t2 = t_a;
profile.t3 = t_j; profile.t3 = t_j_a;
profile.t5 = t_j; profile.t4 = std::max(0.0, (d - s_min) / v);
profile.t5 = t_j_a;
profile.t6 = t_a; profile.t6 = t_a;
profile.t7 = t_j; profile.t7 = t_j_a;
// 加速阶段t1+t2+t3覆盖的位移
double d_acc = v_j * t_j + 0.5 * a * t_j * t_j + // t1
(v_j + 0.5 * a * t_j) * t_a + 0.5 * a * t_a * t_a + // t2
(v_j + a * t_j + a * t_a) * t_j + 0.5 * a * t_j * t_j - j * t_j * t_j * t_j / 6.0; // t3
// 减速阶段对称
double d_dec = d_acc;
// 巡航段位移
double d_cruise = d - d_acc - d_dec;
if (d_cruise < 0) d_cruise = 0;
// 巡航段时间
profile.t4 = d_cruise / v;
profile.v_cruise = v; profile.v_cruise = v;
profile.a_limit = a; profile.a_limit = a;
}
profile.total_time = profile.t1 + profile.t2 + profile.t3 + profile.t4 + profile.total_time = profile.t1 + profile.t2 + profile.t3 + profile.t4 +
profile.t5 + profile.t6 + profile.t7; profile.t5 + profile.t6 + profile.t7;
@ -509,7 +388,7 @@ double SCurve::getPositionAtTime(const SCurveProfile& profile, double t) const
double SCurve::getVelocityAtTime(const SCurveProfile& profile, double t) const double SCurve::getVelocityAtTime(const SCurveProfile& profile, double t) const
{ {
if (t <= 0) return profile.v0; if (t <= 0) return profile.v0;
if (t >= profile.total_time) return 0.0; // 假设末端静止 if (t >= profile.total_time) return profile.vf;
double j = profile.j_max * profile.direction; double j = profile.j_max * profile.direction;
double v = profile.v0; double v = profile.v0;
@ -616,6 +495,14 @@ double SCurve::getAccelerationAtTime(const SCurveProfile& profile, double t) con
return a + j * (t - t_end6); return a + j * (t - t_end6);
} }
double SCurve::getJerkAtTime(const SCurveProfile& profile, double t) const
{
if (t <= 0.0 || t >= profile.total_time) {
return 0.0;
}
return computeSegmentJerk(profile, t);
}
void SCurve::generateTrajectory(const SCurveProfile& profile, double dt, void SCurve::generateTrajectory(const SCurveProfile& profile, double dt,
std::vector<double>& positions, std::vector<double>& positions,
std::vector<double>& velocities, std::vector<double>& velocities,
@ -647,9 +534,9 @@ void SCurve::generateTrajectory(const SCurveProfile& profile, double dt,
if (positions.empty() || if (positions.empty() ||
std::abs(positions.back() - (profile.p0 + profile.distance * profile.direction)) > EPSILON) { std::abs(positions.back() - (profile.p0 + profile.distance * profile.direction)) > EPSILON) {
positions.push_back(profile.p0 + profile.distance * profile.direction); positions.push_back(profile.p0 + profile.distance * profile.direction);
velocities.push_back(0.0); velocities.push_back(profile.vf);
accelerations.push_back(0.0); accelerations.push_back(0.0);
} }
} }
} // namespace el_a3_hardware }

View File

@ -1,373 +0,0 @@
#include "common/utils/visualization/image_display.h"
#include "common/utils/image/image_process.h"
#include "devices/camera/realsense_camera/include/realsense_camera.h"
#include "perception/include/tag_relative_target_3d.h"
#include <gtest/gtest.h>
#include <cmath>
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <string>
namespace {
cv::Mat makeBlankImage(int width = 160, int height = 120) {
return cv::Mat(height, width, CV_8UC3, cv::Scalar(0, 0, 0));
}
constexpr const char* kRsSerial = "243122074587";
constexpr double kTagSizeM = 0.01975;
constexpr int kRsWidth = 1280;
constexpr int kRsHeight = 720;
constexpr int kRsFps = 30;
constexpr int kTargetU = -1; // negative means image center
constexpr int kTargetV = -1; // negative means image center
constexpr int kDisplayFrames = 1200;
constexpr const char* kTrackingWindowName = "ImageDisplayTagTrackingTest";
int countNonZeroPixelsInRoi(const cv::Mat& image, const cv::Rect& roi) {
const cv::Rect image_rect(0, 0, image.cols, image.rows);
const cv::Rect clipped = roi & image_rect;
if (clipped.width <= 0 || clipped.height <= 0) {
return 0;
}
cv::Mat gray;
cv::cvtColor(image(clipped), gray, cv::COLOR_BGR2GRAY);
return cv::countNonZero(gray);
}
bool projectTargetToPixel(const Eigen::Vector3d& p_c,
const cmvr::device::Rs2Intrinsics& intrinsics,
cmvr::common::Pixel& pixel_out) {
Eigen::Vector2d uv = Eigen::Vector2d::Zero();
if (!cmvr::ImageProcess::projectCameraPointToPixel(intrinsics, p_c, uv)) {
return false;
}
pixel_out.u = static_cast<int>(std::lround(uv.x()));
pixel_out.v = static_cast<int>(std::lround(uv.y()));
return true;
}
} // namespace
TEST(OpenCvImageCvDisplayTest, RenderFailsWithoutImage) {
cmvr::common::OpenCvImageCvDisplay display;
cv::Mat rendered;
EXPECT_FALSE(display.render(rendered));
}
TEST(OpenCvImageCvDisplayTest, RenderPointChangesCenterRegion) {
cmvr::common::OpenCvImageCvDisplay display;
display.setImage(makeBlankImage());
display.showPoint(cmvr::common::Pixel{60, 40},
cmvr::common::Color::red(),
5,
-1,
"target");
cv::Mat rendered;
ASSERT_TRUE(display.render(rendered));
ASSERT_FALSE(rendered.empty());
const cv::Vec3b center = rendered.at<cv::Vec3b>(40, 60);
EXPECT_GT(static_cast<int>(center[2]), 150);
EXPECT_LT(static_cast<int>(center[1]), 80);
EXPECT_LT(static_cast<int>(center[0]), 80);
}
TEST(OpenCvImageCvDisplayTest, RenderCircleChangesExpectedArcRegion) {
cmvr::common::OpenCvImageCvDisplay display;
display.setImage(makeBlankImage());
display.showCircle(cmvr::common::Pixel{60, 40},
12,
cmvr::common::Color::yellow(),
2);
cv::Mat rendered;
ASSERT_TRUE(display.render(rendered));
ASSERT_FALSE(rendered.empty());
EXPECT_GT(countNonZeroPixelsInRoi(rendered, cv::Rect(58, 26, 5, 5)), 0);
EXPECT_EQ(countNonZeroPixelsInRoi(rendered, cv::Rect(59, 39, 3, 3)), 0);
}
TEST(OpenCvImageCvDisplayTest, RenderCrossChangesHorizontalAndVerticalArms) {
cmvr::common::OpenCvImageCvDisplay display;
display.setImage(makeBlankImage());
display.showCross(cmvr::common::Pixel{60, 40},
10,
cmvr::common::Color::blue(),
2);
cv::Mat rendered;
ASSERT_TRUE(display.render(rendered));
ASSERT_FALSE(rendered.empty());
EXPECT_GT(countNonZeroPixelsInRoi(rendered, cv::Rect(49, 39, 5, 3)), 0);
EXPECT_GT(countNonZeroPixelsInRoi(rendered, cv::Rect(59, 29, 3, 5)), 0);
}
TEST(OpenCvImageCvDisplayTest, RenderTextChangesRequestedRegion) {
cmvr::common::OpenCvImageCvDisplay display;
display.setImage(makeBlankImage());
cmvr::common::TextOverlay overlay;
overlay.text = "tracked tag: 7";
overlay.position_px = cmvr::common::Pixel{10, 30};
overlay.color = cmvr::common::Color::white();
overlay.draw_background = true;
display.showText(overlay);
cv::Mat rendered;
ASSERT_TRUE(display.render(rendered));
ASSERT_FALSE(rendered.empty());
EXPECT_GT(countNonZeroPixelsInRoi(rendered, cv::Rect(5, 5, 120, 35)), 0);
}
TEST(OpenCvImageCvDisplayTest, ClearOverlaysRemovesAllRenderedGeometry) {
cmvr::common::OpenCvImageCvDisplay display;
display.setImage(makeBlankImage());
display.showPoint(cmvr::common::Pixel{60, 40},
cmvr::common::Color::red(),
5,
-1,
"target");
display.showCircle(cmvr::common::Pixel{60, 40},
12,
cmvr::common::Color::yellow(),
2);
display.showCross(cmvr::common::Pixel{60, 40},
10,
cmvr::common::Color::blue(),
2);
display.showText("tracked tag: 7",
cmvr::common::Pixel{10, 30},
cmvr::common::Color::white(),
0.7,
2);
display.clearOverlays();
cv::Mat rendered;
ASSERT_TRUE(display.render(rendered));
ASSERT_FALSE(rendered.empty());
EXPECT_EQ(countNonZeroPixelsInRoi(rendered, cv::Rect(0, 0, rendered.cols, rendered.rows)), 0);
}
TEST(OpenCvImageCvDisplayTest, ShowDisplaysWindowIfHighGuiIsAvailable) {
constexpr const char* kWindowName = "OpenCvImageCvDisplayTest";
cmvr::common::OpenCvImageCvDisplay display(kWindowName);
bool window_enabled = true;
try {
cv::namedWindow(kWindowName, cv::WINDOW_NORMAL);
cv::imshow(kWindowName, cv::Mat(120, 160, CV_8UC3, cv::Scalar(20, 20, 20)));
cv::waitKey(1);
} catch (const cv::Exception& e) {
window_enabled = false;
std::cout << "[OpenCvImageCvDisplayTest] window disabled: " << e.what() << "\n";
}
if (!window_enabled) {
GTEST_SKIP() << "OpenCV highgui is not available, skip windowed test.";
}
for (int frame = 0; frame < 1200; ++frame) {
cv::Mat image(240, 320, CV_8UC3, cv::Scalar(20, 20, 20));
display.setImage(image);
display.clearOverlays();
const int center_u = 80 + frame;
const int center_v = 120;
display.showPoint(cmvr::common::Pixel{center_u, center_v},
cmvr::common::Color::red(),
5,
-1,
"target");
display.showCircle(cmvr::common::Pixel{center_u, center_v},
18,
cmvr::common::Color::yellow(),
2);
display.showCross(cmvr::common::Pixel{center_u, center_v},
10,
cmvr::common::Color::blue(),
2);
display.showText("tracked tag: 7",
cmvr::common::Pixel{20, 30},
cmvr::common::Color::white(),
0.8,
2);
const int key = display.show(30);
if (key == 27 || key == 'q' || key == 'Q') {
break;
}
}
display.close();
}
TEST(OpenCvImageCvDisplayTest, ShowTrackingImageWithActiveTagAndTargetPoint) {
const std::string serial = kRsSerial;
if (serial.empty()) {
GTEST_SKIP() << "kRsSerial is empty, please set it in image_display_test.cpp";
}
cmvr::config::RealSenseCameraConfig cam_cfg;
cam_cfg.set_id("image_display_test");
cam_cfg.set_serialnumber(serial);
cam_cfg.set_width(kRsWidth);
cam_cfg.set_height(kRsHeight);
cam_cfg.set_fps(kRsFps);
cam_cfg.set_codec("H265");
cam_cfg.set_camera_mode(cmvr::config::CAMERA_MODE_PHOTO);
cam_cfg.set_stream_mode(cmvr::config::STREAM_MODE_RGBD);
cam_cfg.set_align_mode(cmvr::config::ALIGN_MODE_COLOR);
cam_cfg.set_buffer_size(30);
cam_cfg.set_sync(true);
cam_cfg.set_enable(true);
auto camera = std::make_shared<cmvr::device::RealsenseCamera>(cam_cfg);
auto perception = std::make_shared<cmvr::perception::AprilTagPerception>(camera);
perception->setTagSize(kTagSizeM);
cmvr::perception::TagRelativeTarget3D tracker(perception);
tracker.setTargetPointMethod(cmvr::perception::TagRelativeTarget3D::TargetPointMethod::TAG_PLANE);
tracker.setActiveTagSwitchPolicy(4, 1.2);
tracker.setTrackingCandidateScoreWeights(1.0, 2.0, 0.08);
cmvr::perception::AprilTagPerception::Options opt;
opt.depth_policy = cmvr::perception::AprilTagPerception::DepthPolicy::NONE;
opt.detect_tags = true;
ASSERT_NO_THROW(camera->init());
ASSERT_NO_THROW(camera->start());
struct CameraStopGuard {
std::shared_ptr<cmvr::device::RealsenseCamera> cam;
~CameraStopGuard() {
if (!cam) return;
try {
cam->stop();
} catch (...) {
}
}
} stop_guard{camera};
cmvr::common::OpenCvImageCvDisplay display(kTrackingWindowName);
bool window_enabled = true;
try {
cv::namedWindow(kTrackingWindowName, cv::WINDOW_NORMAL);
cv::resizeWindow(kTrackingWindowName, kRsWidth, kRsHeight);
cv::imshow(kTrackingWindowName,
cv::Mat(kRsHeight, kRsWidth, CV_8UC3, cv::Scalar(20, 20, 20)));
cv::waitKey(1);
} catch (const cv::Exception& e) {
window_enabled = false;
std::cout << "[OpenCvImageCvDisplayTest] window disabled: " << e.what() << "\n";
}
if (!window_enabled) {
GTEST_SKIP() << "OpenCV highgui is not available, skip windowed test.";
}
bool target_uv_initialized = false;
int target_u = kTargetU;
int target_v = kTargetV;
bool target_locked = false;
for (int frame = 0; frame < kDisplayFrames; ++frame) {
const bool update_ok = perception->update(opt);
const cv::Mat& color = perception->color();
cv::Mat display_image = color.empty()
? cv::Mat(kRsHeight, kRsWidth, CV_8UC3, cv::Scalar(20, 20, 20))
: color;
display.setImage(display_image);
display.clearOverlays();
if (!target_uv_initialized && !display_image.empty()) {
target_u = (kTargetU >= 0) ? kTargetU : (display_image.cols / 2);
target_v = (kTargetV >= 0) ? kTargetV : (display_image.rows / 2);
target_uv_initialized = true;
}
if (target_uv_initialized) {
const cmvr::common::Pixel selected_px{target_u, target_v};
display.showCross(selected_px, 10, cmvr::common::Color::yellow(), 2);
display.showCircle(selected_px, 14, cmvr::common::Color::yellow(), 2);
}
bool tracker_ok = false;
if (target_uv_initialized && !color.empty()) {
if (!target_locked) {
tracker_ok = tracker.startTrackingFromPixel(target_u, target_v);
target_locked = tracker_ok;
} else {
tracker_ok = tracker.track();
}
}
if (tracker_ok) {
cmvr::common::Pixel target_px{};
if (projectTargetToPixel(tracker.lastTargetInCamera(), perception->intrinsics(), target_px)) {
display.showPoint(target_px,
cmvr::common::Color::red(),
5,
-1,
"target");
display.showCircle(target_px, 18, cmvr::common::Color::red(), 2);
}
}
display.showText("active tag: " + std::to_string(tracker.activeTagId()),
cmvr::common::Pixel{20, 30},
cmvr::common::Color::white(),
0.8,
2);
display.showText("perception: " +
std::string(cmvr::perception::AprilTagPerception::statusToString(
perception->lastStatus())),
cmvr::common::Pixel{20, 60},
cmvr::common::Color::white(),
0.7,
2);
display.showText("tracker: " +
std::string(cmvr::perception::TagRelativeTarget3D::statusToString(
tracker.lastStatus())),
cmvr::common::Pixel{20, 90},
cmvr::common::Color::white(),
0.7,
2);
display.showText("tags: " + std::to_string(perception->tags().size()) +
" frame_ok: " + std::string(update_ok ? "true" : "false"),
cmvr::common::Pixel{20, 120},
cmvr::common::Color::white(),
0.7,
2);
if (tracker_ok) {
const Eigen::Vector3d& p_c_target = tracker.lastTargetInCamera();
display.showText("target_c: [" +
std::to_string(p_c_target.x()) + ", " +
std::to_string(p_c_target.y()) + ", " +
std::to_string(p_c_target.z()) + "]",
cmvr::common::Pixel{20, 150},
cmvr::common::Color::white(),
0.6,
2);
}
const int key = display.show(1);
if (key == 27 || key == 'q' || key == 'Q') {
break;
}
}
display.close();
}

View File

@ -1,7 +1,7 @@
#include "controller/include/ibvs_controller.h" #include "controller/include/ibvs_controller.h"
#include "common/utils/image/image_process.h" #include "common/utils/image/image_process.h"
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>

View File

@ -7,7 +7,7 @@
#include "motor/ti5_motor/ti5_motor.h" #include "motor/ti5_motor/ti5_motor.h"
#include "../../../../utils/base/include/abstract_interpolation.h" #include "../../../../utils/base/include/abstract_interpolation.h"
#include "data_center/include/motors_info.h" #include "data_center/include/motors_info.h"
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
using namespace std; using namespace std;
using namespace cmvr::device; using namespace cmvr::device;

View File

@ -20,6 +20,7 @@ target_link_libraries(ik_solver PUBLIC
pinocchio_default pinocchio_default
pinocchio_parsers pinocchio_parsers
pinocchio_collision pinocchio_collision
cmvr_es::planner
cmvr_es::common cmvr_es::common
) )
@ -46,6 +47,7 @@ target_link_libraries(srs_ik_test
gtest_main gtest_main
pthread pthread
glog glog
matplot
) )

View File

@ -7,7 +7,7 @@
#include <vector> #include <vector>
#include <Eigen/Core> #include <Eigen/Core>
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
namespace cmvr { namespace cmvr {
class JointsLimitAnalyzer { class JointsLimitAnalyzer {

View File

@ -7,7 +7,7 @@
#include <cmath> #include <cmath>
#include <vector> #include <vector>
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
namespace cmvr { namespace cmvr {
class OptPsiSelector { class OptPsiSelector {

View File

@ -1,14 +1,16 @@
// Created by lgv on 11/28/25.
#pragma once #pragma once
#include "ik_solver/include/pinocchio_ik_base.h" #include "ik_solver/include/pinocchio_ik_base.h"
#include <Eigen/Core> #include <Eigen/Core>
#include <limits> #include <limits>
#include <memory> #include <memory>
#include <string> #include <string>
#include <vector> #include <vector>
#include "cartesian_space_planner/include/cartesian_twist_limiter.h"
namespace cmvr { namespace cmvr {
/** /**
@ -16,26 +18,35 @@ namespace cmvr {
* *
* *
* - 姿 IK`ik` * - 姿 IK`ik`
* - FK`fk` * - FK`fk`
* - twist IK`ik` * - twist IK`ik`
* - 线 MoveLS 线 + IK * - 线 MoveLS 线 + IK
* - speedL CartesianTwistLimiter + DLS IK
* *
* URDF `base_frame_name -> flange_frame_name` * URDF `base_frame_name -> flange_frame_name`
* TCP frame * TCP frame
*/ */
class PinocchioDlsIKSolver : public PinocchioIKBase { class PinocchioDlsIKSolver : public PinocchioIKBase {
public: public:
/** struct SpeedLConfig {
* @brief `PinocchioDlsIKSolver` double linear_velocity_max{0.25};
* @param urdf_path URDF double linear_acceleration_max{0.8};
* @param base_frame_name frame double linear_jerk_max{4.0};
* @param flange_frame_name frame
* @param tcp_frame_name TCP frame 使 TCP double angular_velocity_max{1.0};
* @param max_iters IK double angular_acceleration_max{3.0};
* @param pos_eps m double angular_jerk_max{15.0};
* @param rot_eps rad
* @param damping DLS `1e-6` std::vector<double> joint_velocity_max; ///< size=chain_v_dof_为空则仅用 URDF limit
*/ std::vector<double> joint_acceleration_max; ///< size=chain_v_dof_为空则不做 joint accel 限制
double linear_target_replan_threshold{1e-4};
double angular_target_replan_threshold{1e-4};
double linear_reverse_cos_threshold{-0.8660254037844386}; // cos(150deg)
double linear_reverse_switch_speed_threshold{1e-3};
};
PinocchioDlsIKSolver(const std::string &urdf_path, PinocchioDlsIKSolver(const std::string &urdf_path,
const std::string &base_frame_name, const std::string &base_frame_name,
const std::string &flange_frame_name, const std::string &flange_frame_name,
@ -43,85 +54,32 @@ public:
int max_iters = 100, int max_iters = 100,
double pos_eps = 1e-6, double pos_eps = 1e-6,
double rot_eps = 1e-6, double rot_eps = 1e-6,
double damping = 1e-4); // 建议默认比 1e-6 大点更稳 double damping = 1e-4);
~PinocchioDlsIKSolver() override = default; ~PinocchioDlsIKSolver() override = default;
/**
* @brief URDF姿
* @return `true` `false`
*/
bool init() override; bool init() override;
/**
* @brief 姿 IK
* @param target_pose base 姿
* @param joints_angle
* @param is_tcp `true` TCP flange
* @return `true` `false`
*/
bool ik(const Eigen::Matrix4d &target_pose, bool ik(const Eigen::Matrix4d &target_pose,
std::vector<double> &joints_angle, std::vector<double> &joints_angle,
bool is_tcp = true) override; bool is_tcp = true) override;
/**
* @brief 姿 IK base_link ee_link
*
* `base_link` `ee_link` base->tip
* `base_link` `ee_link` link
*
* @param base_link frame 姿
* @param ee_link frame
* @param target_pose `ee_link` `base_link` 姿
* @param joints_angle
* @return `true` `false`
*/
bool ik(const std::string& base_link, bool ik(const std::string& base_link,
const std::string& ee_link, const std::string& ee_link,
const Eigen::Matrix4d& target_pose, const Eigen::Matrix4d& target_pose,
std::vector<double>& joints_angle); std::vector<double>& joints_angle);
/**
* @brief MoveL IK + S 线
*
* 线姿姿
*
* @param target_pose_base base 姿姿
* @param q_start
* @param q_traj
* @param t_traj
* @param dt
* @param v_tcp_max TCP 线m/s
* @param a_tcp_max TCP 线m/s^2
* @param j_tcp_max TCP 线m/s^3
* @param qd_max rad/s `chain_dof_`
* @param is_tcp `true` TCP flange
* @return `true` `false`
*/
bool moveL_SCurveLocal(const Eigen::Matrix4d& target_pose_base, bool moveL_SCurveLocal(const Eigen::Matrix4d& target_pose_base,
const std::vector<double>& q_start, const std::vector<double>& q_start,
std::vector<std::vector<double>>& q_traj, std::vector<std::vector<double>>& q_traj,
std::vector<double>& t_traj, std::vector<double>& t_traj,
double dt, double dt,
double v_tcp_max, // m/s double v_tcp_max,
double a_tcp_max, // m/s^2 double a_tcp_max,
double j_tcp_max, // m/s^3 double j_tcp_max,
const std::vector<double>& qd_max, // rad/s, size=chain_dof const std::vector<double>& qd_max,
bool is_tcp = true); bool is_tcp = true);
/**
* @brief DLS twist
*
* `cur_joints_angle_` `update_joints_state`
*
* @param base_link frame
* @param ee_link frame
* @param target_vel [vx vy vz wx wy wz]^T m/s rad/s `ee_link`
* @param joints_vel size=chain_v_dof_ rad/s
* @param damping DLS <=0 使 damping_
* @param qdot_abs_max URDF velocityLimit
* @return `true` `false`
*/
bool ik(const std::string& base_link, bool ik(const std::string& base_link,
const std::string& ee_link, const std::string& ee_link,
const Eigen::Matrix<double,6,1>& target_vel, const Eigen::Matrix<double,6,1>& target_vel,
@ -129,118 +87,192 @@ public:
double damping = -1.0, double damping = -1.0,
double qdot_abs_max = std::numeric_limits<double>::infinity()); double qdot_abs_max = std::numeric_limits<double>::infinity());
/**
* @brief null-space
*
* @param enable
* @param gain rad/s
* @param margin_ratio (0, 0.5)
* @param max_push rad/s<=0
*/
void setJointLimitAvoidance(bool enable, void setJointLimitAvoidance(bool enable,
double gain = 0.2, double gain = 0.2,
double margin_ratio = 0.15, double margin_ratio = 0.15,
double max_push = 0.25); double max_push = 0.25);
/**
* @brief IK
* @param iters
*/
void setMaxIters(int iters) { max_iters_ = iters; } void setMaxIters(int iters) { max_iters_ = iters; }
/**
* @brief DLS
* @param d
*/
void setDamping(double d) { damping_ = d; } void setDamping(double d) { damping_ = d; }
/**
* @brief IK
* @param pos_eps m
* @param rot_eps rad
*/
void setEps(double pos_eps, double rot_eps) { pos_eps_ = pos_eps; rot_eps_ = rot_eps; } void setEps(double pos_eps, double rot_eps) { pos_eps_ = pos_eps; rot_eps_ = rot_eps; }
private: // ==================== speedL ====================
/**
* @brief
* @param J
* @param lambda
* @return
*/
Eigen::MatrixXd dampedPseudoInverse(const Eigen::MatrixXd &J, double lambda);
/** /**
* @brief full-model `q` * @brief speedL task-space / joint-space
* @param q_chain *
* @param q_full full-model * speedL
* @param context
* @return `true`
*/ */
bool configureSpeedL(const SpeedLConfig& config);
/**
* @brief speedL
*/
void resetSpeedL();
/**
* @brief speedL /仿
*
* twist
* 使
* 1) speedL MuJoCo 使
* 2) q_measured / qdot_measured task-space limiter
* synchronize
* 3) qdot_cmd solver
*
*
* 1) q_measured / qdot_measured measured twist(base)
* 2) CartesianTwistLimiter
* 3) task-space command twist(base)
* 4) DLS IK qdot
* 5) joint velocity / joint acceleration
* 6) executed twist(base)
*
* @param target_twist twistBase Tool
* @param dt
* @param q_measured size=chain_dof_
* @param qdot_measured size=chain_v_dof_
* @param qdot_cmd size=chain_v_dof_
* @param input_frame target_twist
* @param is_tcp true: TCPfalse: flange
*/
bool speedLStep(const Eigen::Matrix<double,6,1>& target_twist,
double dt,
const std::vector<double>& q_measured,
const std::vector<double>& qdot_measured,
std::vector<double>& qdot_cmd,
CartesianFrame input_frame = CartesianFrame::Tool,
bool is_tcp = true);
/**
* @brief speedL q qd
*
* 使 q_measured 姿
* qdot_measured
*
* 使
* 1) q qd
* 2) qdot_measured speedl_prev_qdot_cmd_
*
* 3) qdot q_measured/qdot_measured
*/
bool speedLStep(const Eigen::Matrix<double,6,1>& target_twist,
double dt,
const std::vector<double>& q_measured,
std::vector<double>& qdot_cmd,
CartesianFrame input_frame = CartesianFrame::Tool,
bool is_tcp = true);
/**
* @brief speedL 退 q qd
*
* 使 cur_joints_angle_
* qdot_cmd 姿
*
* 使
* 1) q qd 使
* 2)
* 3) chain_dof_ == chain_v_dof_ 使使 q += qdot * dt
*
* 4) q qd overload
*/
bool speedLStep(const Eigen::Matrix<double,6,1>& target_twist,
double dt,
std::vector<double>& qdot_cmd,
CartesianFrame input_frame = CartesianFrame::Tool,
bool is_tcp = true);
const Eigen::Matrix<double,6,1>& getSpeedLMeasuredTwistBase() const {
return speedl_twist_measured_base_;
}
const Eigen::Matrix<double,6,1>& getSpeedLCommandTwistBase() const {
return speedl_twist_command_base_;
}
const Eigen::Matrix<double,6,1>& getSpeedLExecutedTwistBase() const {
return speedl_twist_executed_base_;
}
const std::vector<double>& getSpeedLPrevQdotCmd() const {
return speedl_prev_qdot_cmd_;
}
bool isSpeedLConfigured() const { return speedl_configured_; }
private:
Eigen::MatrixXd dampedPseudoInverse(const Eigen::MatrixXd &J, double lambda);
bool buildFullQFromChain(const Eigen::VectorXd& q_chain, bool buildFullQFromChain(const Eigen::VectorXd& q_chain,
Eigen::VectorXd& q_full, Eigen::VectorXd& q_full,
const char* context) const; const char* context) const;
/**
* @brief full Jacobian
* @param J_full full-model Jacobian
* @return Jacobian
*/
Eigen::MatrixXd extractChainJacobian(const Eigen::Matrix<double,6,Eigen::Dynamic>& J_full) const; Eigen::MatrixXd extractChainJacobian(const Eigen::Matrix<double,6,Eigen::Dynamic>& J_full) const;
/**
* @brief base world 姿使
* @return base world 姿
*/
const pinocchio::SE3& getBasePoseWorld() const; const pinocchio::SE3& getBasePoseWorld() const;
/**
* @brief
* @param q_chain
* @return
*/
Eigen::VectorXd computeJointLimitAvoidanceVelocity(const Eigen::VectorXd& q_chain) const; Eigen::VectorXd computeJointLimitAvoidanceVelocity(const Eigen::VectorXd& q_chain) const;
/**
* @brief
* @param J_pinv
* @param J
* @param secondary
* @return `N * secondary` `N = I - J_pinv * J`
*/
Eigen::VectorXd projectToNullspace(const Eigen::MatrixXd& J_pinv, Eigen::VectorXd projectToNullspace(const Eigen::MatrixXd& J_pinv,
const Eigen::MatrixXd& J, const Eigen::MatrixXd& J,
const Eigen::VectorXd& secondary) const; const Eigen::VectorXd& secondary) const;
// ==================== speedL helpers ====================
bool resolveSpeedLEeFrame(bool is_tcp, pinocchio::FrameIndex& ee_id) const;
bool buildJacobianBaseAtQ(const std::vector<double>& q_chain,
pinocchio::FrameIndex ee_id,
Eigen::MatrixXd& J_base,
Eigen::Matrix3d& base_R_ee,
Eigen::VectorXd* q_full_out = nullptr);
bool computeMeasuredTwistBase(const std::vector<double>& q_chain,
const std::vector<double>& qdot_chain,
pinocchio::FrameIndex ee_id,
Eigen::Matrix<double,6,1>& twist_base,
Eigen::MatrixXd* J_base_out = nullptr,
Eigen::Matrix3d* base_R_ee_out = nullptr,
Eigen::VectorXd* q_full_out = nullptr);
Eigen::VectorXd applyJointVelocityLimits(const Eigen::VectorXd& qdot_des) const;
Eigen::VectorXd applyJointAccelerationLimits(const Eigen::VectorXd& qdot_des,
const Eigen::VectorXd& qdot_reference,
double dt) const;
private: private:
/** @brief 当前链在 full-model `q` 中的起始索引。 */
int chain_q_start_{0}; int chain_q_start_{0};
/** @brief 当前链关节位置自由度数量。 */
int chain_dof_{0}; int chain_dof_{0};
/** @brief 当前链在 full-model `v` 中的起始索引。 */
int chain_v_start_{0}; int chain_v_start_{0};
/** @brief 当前链关节速度自由度数量。 */
int chain_v_dof_{0}; int chain_v_dof_{0};
/** @brief 是否启用 null-space 关节限位避障。 */
bool limit_avoidance_enabled_{false}; bool limit_avoidance_enabled_{false};
/** @brief 限位避障增益。 */
double limit_avoidance_gain_{0.2}; double limit_avoidance_gain_{0.2};
/** @brief 限位触发边界比例(占关节行程比例)。 */
double limit_avoidance_margin_ratio_{0.15}; double limit_avoidance_margin_ratio_{0.15};
/** @brief 每关节最大推回速度rad/s<=0 表示不额外限幅。 */
double limit_avoidance_max_push_{0.25}; double limit_avoidance_max_push_{0.25};
/** @brief 是否启用基座位姿缓存。 */
bool base_pose_cached_{false}; bool base_pose_cached_{false};
/** @brief 缓存的 base 在 world 下位姿。 */
pinocchio::SE3 oM_base_cached_; pinocchio::SE3 oM_base_cached_;
/** @brief 求解器是否已完成初始化。 */
bool initialized_{false}; bool initialized_{false};
/** @brief IK 最大迭代次数。 */
int max_iters_; int max_iters_;
/** @brief IK 平移收敛阈值m。 */
double pos_eps_; double pos_eps_;
/** @brief IK 旋转收敛阈值rad。 */
double rot_eps_; double rot_eps_;
/** @brief DLS 阻尼系数。 */
double damping_; double damping_;
// ==================== speedL state ====================
bool speedl_configured_{false};
bool speedl_last_is_tcp_{true};
SpeedLConfig speedl_config_;
CartesianTwistLimiter speedl_twist_limiter_;
std::vector<double> speedl_prev_qdot_cmd_; ///< size=chain_v_dof_
Eigen::Matrix<double,6,1> speedl_twist_measured_base_{Eigen::Matrix<double,6,1>::Zero()};
Eigen::Matrix<double,6,1> speedl_twist_command_base_{Eigen::Matrix<double,6,1>::Zero()};
Eigen::Matrix<double,6,1> speedl_twist_executed_base_{Eigen::Matrix<double,6,1>::Zero()};
}; };
} // namespace cmvr } // namespace cmvr

View File

@ -8,7 +8,7 @@
#pragma once #pragma once
#include "ik_solver/include/pinocchio_ik_base.h" #include "ik_solver/include/pinocchio_ik_base.h"
#include "common/utils/math/qp_solver.h" #include "common/math/include/qp_solver.h"
#include <Eigen/Core> #include <Eigen/Core>
#include <memory> #include <memory>

View File

@ -4,7 +4,7 @@
#include "ik_solver/include/bias_srs_ik_slover.h" #include "ik_solver/include/bias_srs_ik_slover.h"
#include <iostream> #include <iostream>
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
#include "common/consts/constant.h" #include "common/consts/constant.h"
using namespace cmvr; using namespace cmvr;
using namespace Eigen; using namespace Eigen;

View File

@ -3,7 +3,7 @@
// //
#include "ik_solver/include/lawba_ik_solver.h" #include "ik_solver/include/lawba_ik_solver.h"
#include "common/utils/math/support_functions.h" #include "common/math/include/support_functions.h"
using namespace cmvr; using namespace cmvr;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,13 @@
add_library(planner STATIC add_library(planner STATIC
joint_space_planner/src/joint_space_planner.cpp joint_space_planner/src/joint_space_planner.cpp
joint_space_planner/src/joint_space_planner_creator.cpp joint_space_planner/src/joint_space_planner_creator.cpp
joint_space_planner/src/toppra_bspline.cpp joint_space_planner/src/toppra_bspline.cpp
s_curve_planner/src/s_curve_position_planner.cpp
s_curve_planner/src/s_curve_velocity_planner.cpp
cartesian_space_planner/src/cartesian_twist_limiter.cpp
) )
target_include_directories(planner PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(planner PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
@ -12,6 +17,7 @@ target_link_libraries(planner PUBLIC
tinyxml2 tinyxml2
fcl fcl
toppra toppra
cmvr_es::common
) )
add_library(cmvr_es::planner ALIAS planner) add_library(cmvr_es::planner ALIAS planner)
@ -46,4 +52,17 @@ target_link_libraries(joint_space_planner_test
) )
add_executable(cartesian_twist_limiter_test
${CMAKE_CURRENT_SOURCE_DIR}/cartesian_space_planner/src/cartesian_twist_limiter_test.cpp
)
target_link_libraries(cartesian_twist_limiter_test
PRIVATE
cmvr_es::planner
gtest
gtest_main
pthread
glog
cmvr_es::proto
matplot
)

View File

@ -0,0 +1,242 @@
#pragma once
#include <Eigen/Core>
#include <Eigen/Geometry>
#include "planner/s_curve_planner/include/s_curve_velocity_planner.h"
namespace cmvr
{
enum class CartesianFrame
{
Base = 0,
Tool = 1
};
/**
* @brief 6 twist 线 SCurveVelocityPlanner1D
*
* 线
* - 使 SCurveVelocityPlanner1D jerk-limited
* -
* - 线0 switch policy
*
*
* - 线
* - 使 SCurveVelocityPlanner1D jerk-limited
* -
*
*
* - setTargetTwist(...) twist
* - synchronizeToMeasuredTwistBase(...) twist
* - update(dt, base_R_tool) twist
*/
class CartesianTwistLimiter
{
public:
using Twist = Eigen::Matrix<double, 6, 1>;
CartesianTwistLimiter();
void setLinearConstraints(double max_velocity,
double max_acceleration,
double max_jerk);
void setAngularConstraints(double max_velocity,
double max_acceleration,
double max_jerk);
void setLinearTargetReplanThreshold(double threshold);
void setAngularTargetReplanThreshold(double threshold);
/**
* @brief 线rad/s
*/
void setLinearDirectionRateLimit(double max_rate_rad_s);
/**
* @brief rad/s
*/
void setAngularDirectionRateLimit(double max_rate_rad_s);
/**
* @brief 线
*
* @param cos_threshold [-1, 1]
* @param switch_speed_threshold 线
*/
void setLinearReverseSwitchPolicy(double cos_threshold,
double switch_speed_threshold);
/**
* @brief twist
*
*
* - twist base
*/
void initialize(const Twist& initial_twist = Twist::Zero());
void reset();
/**
* @brief twist
*
* @param target_twist twist
* @param frame Base Tool
*/
void setTargetTwist(const Twist& target_twist, CartesianFrame frame);
/**
* @brief
*/
void stop();
/**
* @brief
*
* 使/jerk 线/ 0
*
*
* @param emergency_acceleration
* @param emergency_jerk jerk
*/
void emergencyStop(double emergency_acceleration,
double emergency_jerk);
/**
* @brief 线/ jerk
*
* @param emergency_linear_acceleration 线
* @param emergency_linear_jerk 线 jerk
* @param emergency_angular_acceleration
* @param emergency_angular_jerk jerk
*/
void emergencyStop(double emergency_linear_acceleration,
double emergency_linear_jerk,
double emergency_angular_acceleration,
double emergency_angular_jerk);
/**
* @brief base-frame twist
*
*
* -
* - planner
* - keep_target=true
* - profile profile
* - planner
* - keep_target=false
* - profile
*
* @param measured_twist_base twistbase
* @param dt
* @param keep_target
*/
void synchronize(const Twist& measured_twist_base,
double dt,
bool keep_target = true);
/**
* @brief base twist
*/
Twist update(double dt, const Eigen::Matrix3d& base_R_tool);
const Twist& getTwistBase() const { return twist_base_; }
const Twist& getCommandedTwistBase() const { return twist_base_; }
const Twist& getTargetTwistBase() const { return target_twist_base_; }
const Twist& getAccelerationBase() const { return acceleration_base_; }
const Twist& getJerkBase() const { return jerk_base_; }
bool isMoving() const;
private:
static constexpr double EPSILON = 1e-12;
static constexpr double DEFAULT_LINEAR_DIR_RATE_LIMIT = 3.14159265358979323846; // 180 deg/s
static constexpr double DEFAULT_ANGULAR_DIR_RATE_LIMIT = 3.14159265358979323846; // 180 deg/s
static constexpr double DEFAULT_LINEAR_REVERSE_COS_THRESHOLD = -0.8660254037844386; // cos(150 deg)
static constexpr double DEFAULT_LINEAR_REVERSE_SWITCH_SPEED_THRESHOLD = 1e-3;
static constexpr double AXIS_LOCK_COS_THRESHOLD = 0.999;
static constexpr double DEFAULT_ANGULAR_SWITCH_SPEED_THRESHOLD = 1e-3;
// 模长 planner
SCurveVelocityPlanner1D linear_norm_planner_;
SCurveVelocityPlanner1D angular_norm_planner_;
// 常规约束缓存。急停结束后恢复到这里。
double linear_max_velocity_;
double linear_max_acceleration_;
double linear_max_jerk_;
double angular_max_velocity_;
double angular_max_acceleration_;
double angular_max_jerk_;
// 方向变化率限制rad/s
double linear_direction_rate_limit_;
double angular_direction_rate_limit_;
// 线速度 reverse policy
double linear_reverse_cos_threshold_;
double linear_reverse_switch_speed_threshold_;
double angular_switch_speed_threshold_;
bool emergency_stop_active_;
// 目标/当前状态
Twist target_twist_input_;
Twist target_twist_base_;
Twist twist_base_;
Twist acceleration_base_;
Twist jerk_base_;
Twist prev_twist_base_;
Twist prev_acceleration_base_;
CartesianFrame input_frame_;
// 当前执行方向
Eigen::Vector3d current_linear_dir_base_;
Eigen::Vector3d current_angular_dir_base_;
// 最近一次非零目标方向目标变0时用于平滑停下
Eigen::Vector3d last_target_linear_dir_base_;
Eigen::Vector3d last_target_angular_dir_base_;
// 测量同步用缓存
bool has_measured_sync_;
Twist last_measured_twist_base_;
Twist last_measured_acceleration_base_;
double prev_measured_linear_norm_;
double prev_measured_angular_norm_;
static Twist transformTwistToolToBase(const Twist& twist_tool,
const Eigen::Matrix3d& base_R_tool);
static Eigen::Vector3d chooseDirection(const Eigen::Vector3d& target_vec,
const Eigen::Vector3d& fallback);
static Eigen::Vector3d rotateDirectionToward(const Eigen::Vector3d& current_dir,
const Eigen::Vector3d& target_dir,
double max_rate_rad_s,
double dt);
static Eigen::Vector3d rotateAroundAxis(const Eigen::Vector3d& v,
const Eigen::Vector3d& axis_unit,
double angle_rad);
static Eigen::Vector3d chooseOrthogonalUnit(const Eigen::Vector3d& v);
void applyLinearConstraints(double max_velocity,
double max_acceleration,
double max_jerk);
void applyAngularConstraints(double max_velocity,
double max_acceleration,
double max_jerk);
void restoreNominalConstraints();
static bool isZeroTwist(const Twist& twist);
static double clamp(double value, double lo, double hi)
{
return std::max(lo, std::min(hi, value));
}
};
} // namespace cmvr

View File

@ -0,0 +1,537 @@
#include "../include/cartesian_twist_limiter.h"
#include <algorithm>
#include <cmath>
namespace cmvr
{
CartesianTwistLimiter::CartesianTwistLimiter()
: linear_norm_planner_(1.0, 1.0, 5.0)
, angular_norm_planner_(1.0, 1.0, 5.0)
, linear_max_velocity_(1.0)
, linear_max_acceleration_(1.0)
, linear_max_jerk_(5.0)
, angular_max_velocity_(1.0)
, angular_max_acceleration_(1.0)
, angular_max_jerk_(5.0)
, linear_direction_rate_limit_(DEFAULT_LINEAR_DIR_RATE_LIMIT)
, angular_direction_rate_limit_(DEFAULT_ANGULAR_DIR_RATE_LIMIT)
, linear_reverse_cos_threshold_(DEFAULT_LINEAR_REVERSE_COS_THRESHOLD)
, linear_reverse_switch_speed_threshold_(DEFAULT_LINEAR_REVERSE_SWITCH_SPEED_THRESHOLD)
, angular_switch_speed_threshold_(DEFAULT_ANGULAR_SWITCH_SPEED_THRESHOLD)
, emergency_stop_active_(false)
, target_twist_input_(Twist::Zero())
, target_twist_base_(Twist::Zero())
, twist_base_(Twist::Zero())
, acceleration_base_(Twist::Zero())
, jerk_base_(Twist::Zero())
, prev_twist_base_(Twist::Zero())
, prev_acceleration_base_(Twist::Zero())
, input_frame_(CartesianFrame::Base)
, current_linear_dir_base_(Eigen::Vector3d::Zero())
, current_angular_dir_base_(Eigen::Vector3d::Zero())
, last_target_linear_dir_base_(Eigen::Vector3d::Zero())
, last_target_angular_dir_base_(Eigen::Vector3d::Zero())
, has_measured_sync_(false)
, last_measured_twist_base_(Twist::Zero())
, last_measured_acceleration_base_(Twist::Zero())
, prev_measured_linear_norm_(0.0)
, prev_measured_angular_norm_(0.0)
{
}
void CartesianTwistLimiter::applyLinearConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
linear_norm_planner_.setConstraints(max_velocity, max_acceleration, max_jerk);
}
void CartesianTwistLimiter::applyAngularConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
angular_norm_planner_.setConstraints(max_velocity, max_acceleration, max_jerk);
}
void CartesianTwistLimiter::setLinearConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
linear_max_velocity_ = std::abs(max_velocity);
linear_max_acceleration_ = std::abs(max_acceleration);
linear_max_jerk_ = std::abs(max_jerk);
if (!emergency_stop_active_) {
applyLinearConstraints(linear_max_velocity_, linear_max_acceleration_, linear_max_jerk_);
}
}
void CartesianTwistLimiter::setAngularConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
angular_max_velocity_ = std::abs(max_velocity);
angular_max_acceleration_ = std::abs(max_acceleration);
angular_max_jerk_ = std::abs(max_jerk);
if (!emergency_stop_active_) {
applyAngularConstraints(angular_max_velocity_, angular_max_acceleration_, angular_max_jerk_);
}
}
void CartesianTwistLimiter::setLinearTargetReplanThreshold(double threshold)
{
linear_norm_planner_.setTargetReplanThreshold(threshold);
}
void CartesianTwistLimiter::setAngularTargetReplanThreshold(double threshold)
{
angular_norm_planner_.setTargetReplanThreshold(threshold);
}
void CartesianTwistLimiter::setLinearDirectionRateLimit(double max_rate_rad_s)
{
linear_direction_rate_limit_ = std::max(0.0, max_rate_rad_s);
}
void CartesianTwistLimiter::setAngularDirectionRateLimit(double max_rate_rad_s)
{
angular_direction_rate_limit_ = std::max(0.0, max_rate_rad_s);
}
void CartesianTwistLimiter::setLinearReverseSwitchPolicy(double cos_threshold,
double switch_speed_threshold)
{
linear_reverse_cos_threshold_ = clamp(cos_threshold, -1.0, 1.0);
linear_reverse_switch_speed_threshold_ = std::max(0.0, switch_speed_threshold);
}
void CartesianTwistLimiter::initialize(const Twist& initial_twist)
{
restoreNominalConstraints();
emergency_stop_active_ = false;
const Eigen::Vector3d v0 = initial_twist.head<3>();
const Eigen::Vector3d w0 = initial_twist.tail<3>();
const double v0_norm = v0.norm();
const double w0_norm = w0.norm();
linear_norm_planner_.initialize(v0_norm, 0.0);
angular_norm_planner_.initialize(w0_norm, 0.0);
target_twist_input_ = initial_twist;
target_twist_base_ = initial_twist;
twist_base_ = initial_twist;
acceleration_base_.setZero();
jerk_base_.setZero();
prev_twist_base_ = initial_twist;
prev_acceleration_base_.setZero();
// current_linear_dir_base_ =
// (v0_norm > EPSILON) ? (v0 / v0_norm) : Eigen::Vector3d::Zero();
// current_angular_dir_base_ =
// (w0_norm > EPSILON) ? (w0 / w0_norm) : Eigen::Vector3d::Zero();
current_linear_dir_base_.setZero();
current_angular_dir_base_.setZero();
if (v0_norm > EPSILON) {
current_linear_dir_base_ = v0 / v0_norm;
} else {
}
if (w0_norm > EPSILON) {
current_angular_dir_base_ = w0 / w0_norm;
} else {
}
last_target_linear_dir_base_ = current_linear_dir_base_;
last_target_angular_dir_base_ = current_angular_dir_base_;
has_measured_sync_ = false;
last_measured_twist_base_ = initial_twist;
last_measured_acceleration_base_.setZero();
prev_measured_linear_norm_ = v0_norm;
prev_measured_angular_norm_ = w0_norm;
}
void CartesianTwistLimiter::reset()
{
restoreNominalConstraints();
emergency_stop_active_ = false;
linear_norm_planner_.reset();
angular_norm_planner_.reset();
target_twist_input_.setZero();
target_twist_base_.setZero();
twist_base_.setZero();
acceleration_base_.setZero();
jerk_base_.setZero();
prev_twist_base_.setZero();
prev_acceleration_base_.setZero();
input_frame_ = CartesianFrame::Base;
current_linear_dir_base_.setZero();
current_angular_dir_base_.setZero();
last_target_linear_dir_base_.setZero();
last_target_angular_dir_base_.setZero();
has_measured_sync_ = false;
last_measured_twist_base_.setZero();
last_measured_acceleration_base_.setZero();
prev_measured_linear_norm_ = 0.0;
prev_measured_angular_norm_ = 0.0;
}
void CartesianTwistLimiter::setTargetTwist(const Twist& target_twist, CartesianFrame frame)
{
if (emergency_stop_active_ && !isZeroTwist(target_twist)) {
restoreNominalConstraints();
emergency_stop_active_ = false;
}
target_twist_input_ = target_twist;
input_frame_ = frame;
}
void CartesianTwistLimiter::stop()
{
target_twist_input_.setZero();
}
void CartesianTwistLimiter::emergencyStop(double emergency_acceleration,
double emergency_jerk)
{
emergencyStop(emergency_acceleration,
emergency_jerk,
emergency_acceleration,
emergency_jerk);
}
void CartesianTwistLimiter::emergencyStop(double emergency_linear_acceleration,
double emergency_linear_jerk,
double emergency_angular_acceleration,
double emergency_angular_jerk)
{
const double linear_stop_acceleration =
std::max(std::abs(emergency_linear_acceleration), linear_max_acceleration_);
const double linear_stop_jerk =
std::max(std::abs(emergency_linear_jerk), linear_max_jerk_);
const double angular_stop_acceleration =
std::max(std::abs(emergency_angular_acceleration), angular_max_acceleration_);
const double angular_stop_jerk =
std::max(std::abs(emergency_angular_jerk), angular_max_jerk_);
applyLinearConstraints(linear_max_velocity_, linear_stop_acceleration, linear_stop_jerk);
applyAngularConstraints(angular_max_velocity_, angular_stop_acceleration, angular_stop_jerk);
emergency_stop_active_ = true;
target_twist_input_.setZero();
target_twist_base_.setZero();
linear_norm_planner_.setTargetVelocity(0.0);
angular_norm_planner_.setTargetVelocity(0.0);
}
void CartesianTwistLimiter::synchronize(const Twist& measured_twist_base,
double dt,
bool keep_target)
{
const Eigen::Vector3d v_meas = measured_twist_base.head<3>();
const Eigen::Vector3d w_meas = measured_twist_base.tail<3>();
const double v_norm = v_meas.norm();
const double w_norm = w_meas.norm();
double v_acc = 0.0;
double w_acc = 0.0;
if (dt > EPSILON && has_measured_sync_) {
v_acc = (v_norm - prev_measured_linear_norm_) / dt;
w_acc = (w_norm - prev_measured_angular_norm_) / dt;
acceleration_base_ = (measured_twist_base - last_measured_twist_base_) / dt;
jerk_base_ = (acceleration_base_ - last_measured_acceleration_base_) / dt;
last_measured_acceleration_base_ = acceleration_base_;
} else {
acceleration_base_.setZero();
jerk_base_.setZero();
last_measured_acceleration_base_.setZero();
}
prev_measured_linear_norm_ = v_norm;
prev_measured_angular_norm_ = w_norm;
last_measured_twist_base_ = measured_twist_base;
has_measured_sync_ = true;
// 用测得模长/模长加速度同步 planner 当前状态。
// keep_target=true:
// - 若测量值仍贴着当前 profile则继续沿旧 profile 走
// - 否则从测量状态重规划到当前目标
// keep_target=false:
// - 仅覆盖状态并清掉旧 profile不保留当前目标
if (keep_target) {
linear_norm_planner_.synchronizeAndReplan(v_norm, v_acc);
angular_norm_planner_.synchronizeAndReplan(w_norm, w_acc);
} else {
linear_norm_planner_.overwriteState(v_norm, v_acc, false);
angular_norm_planner_.overwriteState(w_norm, w_acc, false);
target_twist_input_.setZero();
target_twist_base_.setZero();
}
if (v_norm > EPSILON) {
current_linear_dir_base_ = v_meas / v_norm;
last_target_linear_dir_base_ = current_linear_dir_base_;
}
if (w_norm > EPSILON) {
current_angular_dir_base_ = w_meas / w_norm;
last_target_angular_dir_base_ = current_angular_dir_base_;
}
twist_base_ = measured_twist_base;
prev_twist_base_ = measured_twist_base;
prev_acceleration_base_ = acceleration_base_;
}
CartesianTwistLimiter::Twist
CartesianTwistLimiter::transformTwistToolToBase(const Twist& twist_tool,
const Eigen::Matrix3d& base_R_tool)
{
Twist twist_base;
twist_base.head<3>() = base_R_tool * twist_tool.head<3>();
twist_base.tail<3>() = base_R_tool * twist_tool.tail<3>();
return twist_base;
}
Eigen::Vector3d CartesianTwistLimiter::chooseDirection(const Eigen::Vector3d& target_vec,
const Eigen::Vector3d& fallback)
{
const double n = target_vec.norm();
if (n > EPSILON) {
return target_vec / n;
}
return fallback;
}
Eigen::Vector3d CartesianTwistLimiter::rotateAroundAxis(const Eigen::Vector3d& v,
const Eigen::Vector3d& axis_unit,
double angle_rad)
{
const double c = std::cos(angle_rad);
const double s = std::sin(angle_rad);
return c * v + s * (axis_unit.cross(v)) + (1.0 - c) * axis_unit.dot(v) * axis_unit;
}
Eigen::Vector3d CartesianTwistLimiter::chooseOrthogonalUnit(const Eigen::Vector3d& v)
{
Eigen::Vector3d ref;
if (std::abs(v.x()) < 0.8) {
ref = Eigen::Vector3d::UnitX();
} else if (std::abs(v.y()) < 0.8) {
ref = Eigen::Vector3d::UnitY();
} else {
ref = Eigen::Vector3d::UnitZ();
}
Eigen::Vector3d ortho = ref - ref.dot(v) * v;
const double n = ortho.norm();
if (n > EPSILON) {
return ortho / n;
}
return Eigen::Vector3d::UnitX();
}
void CartesianTwistLimiter::restoreNominalConstraints()
{
applyLinearConstraints(linear_max_velocity_, linear_max_acceleration_, linear_max_jerk_);
applyAngularConstraints(angular_max_velocity_, angular_max_acceleration_, angular_max_jerk_);
}
bool CartesianTwistLimiter::isZeroTwist(const Twist& twist)
{
return twist.head<3>().squaredNorm() <= EPSILON && twist.tail<3>().squaredNorm() <= EPSILON;
}
Eigen::Vector3d CartesianTwistLimiter::rotateDirectionToward(const Eigen::Vector3d& current_dir,
const Eigen::Vector3d& target_dir,
double max_rate_rad_s,
double dt)
{
if (dt <= 0.0) {
return current_dir;
}
const double cur_n = current_dir.norm();
const double tgt_n = target_dir.norm();
if (tgt_n <= EPSILON) {
return current_dir;
}
if (cur_n <= EPSILON) {
return target_dir;
}
const Eigen::Vector3d u = current_dir / cur_n;
const Eigen::Vector3d v = target_dir / tgt_n;
const double dot_uv = clamp(u.dot(v), -1.0, 1.0);
const double angle = std::acos(dot_uv);
if (angle <= 1e-9) {
return v;
}
const double max_step = std::max(0.0, max_rate_rad_s) * dt;
if (max_step <= 0.0) {
return u;
}
if (angle <= max_step) {
return v;
}
Eigen::Vector3d axis = u.cross(v);
const double axis_n = axis.norm();
if (axis_n > EPSILON) {
axis /= axis_n;
return rotateAroundAxis(u, axis, max_step).normalized();
}
if (dot_uv > 0.0) {
return v;
}
const Eigen::Vector3d ortho_axis = chooseOrthogonalUnit(u);
return rotateAroundAxis(u, ortho_axis, max_step).normalized();
}
CartesianTwistLimiter::Twist
CartesianTwistLimiter::update(double dt, const Eigen::Matrix3d& base_R_tool)
{
if (emergency_stop_active_ && isZeroTwist(target_twist_input_) &&
!linear_norm_planner_.isMoving() && !angular_norm_planner_.isMoving()) {
restoreNominalConstraints();
emergency_stop_active_ = false;
}
if (input_frame_ == CartesianFrame::Base) {
target_twist_base_ = target_twist_input_;
} else {
target_twist_base_ = transformTwistToolToBase(target_twist_input_, base_R_tool);
}
// ==================== 线速度:方向锁定 + 标量 planner ====================
const Eigen::Vector3d v_des = target_twist_base_.head<3>();
const double v_des_norm = v_des.norm();
const Eigen::Vector3d v_target_dir =
chooseDirection(v_des,
current_linear_dir_base_.norm() > EPSILON
? current_linear_dir_base_
: last_target_linear_dir_base_);
if (v_des_norm > EPSILON) {
last_target_linear_dir_base_ = v_target_dir;
}
const double v_cur_norm = linear_norm_planner_.getVelocity();
const bool has_current_linear_dir = current_linear_dir_base_.norm() > EPSILON;
if (!has_current_linear_dir) {
if (v_des_norm > EPSILON) {
current_linear_dir_base_ = v_target_dir;
linear_norm_planner_.setTargetVelocity(v_des_norm);
} else {
linear_norm_planner_.setTargetVelocity(0.0);
}
} else if (v_des_norm <= EPSILON) {
linear_norm_planner_.setTargetVelocity(0.0);
} else {
const double dir_dot =
clamp(current_linear_dir_base_.dot(v_target_dir), -1.0, 1.0);
const bool axis_aligned = dir_dot >= AXIS_LOCK_COS_THRESHOLD;
const bool reverse_aligned = dir_dot <= -AXIS_LOCK_COS_THRESHOLD;
const bool same_axis = axis_aligned || reverse_aligned;
const bool must_switch_axis =
!same_axis || dir_dot < linear_reverse_cos_threshold_;
if (must_switch_axis && v_cur_norm > linear_reverse_switch_speed_threshold_) {
linear_norm_planner_.setTargetVelocity(0.0);
} else {
current_linear_dir_base_ = v_target_dir;
linear_norm_planner_.setTargetVelocity(v_des_norm);
}
}
const double v_exec_norm = linear_norm_planner_.update(dt);
twist_base_.head<3>() = current_linear_dir_base_ * v_exec_norm;
// ==================== 角速度:方向锁定 + 标量 planner ====================
const Eigen::Vector3d w_des = target_twist_base_.tail<3>();
const double w_des_norm = w_des.norm();
const Eigen::Vector3d w_target_dir =
chooseDirection(w_des,
current_angular_dir_base_.norm() > EPSILON
? current_angular_dir_base_
: last_target_angular_dir_base_);
if (w_des_norm > EPSILON) {
last_target_angular_dir_base_ = w_target_dir;
}
const double w_cur_norm = angular_norm_planner_.getVelocity();
const bool has_current_angular_dir = current_angular_dir_base_.norm() > EPSILON;
if (!has_current_angular_dir) {
if (w_des_norm > EPSILON) {
current_angular_dir_base_ = w_target_dir;
angular_norm_planner_.setTargetVelocity(w_des_norm);
} else {
angular_norm_planner_.setTargetVelocity(0.0);
}
} else if (w_des_norm <= EPSILON) {
angular_norm_planner_.setTargetVelocity(0.0);
} else {
const double dir_dot =
clamp(current_angular_dir_base_.dot(w_target_dir), -1.0, 1.0);
const bool axis_aligned = dir_dot >= AXIS_LOCK_COS_THRESHOLD;
const bool reverse_aligned = dir_dot <= -AXIS_LOCK_COS_THRESHOLD;
const bool same_axis = axis_aligned || reverse_aligned;
// 角速度与线速度一致:反向同轴也必须先减速到 0再切方向。
const bool must_switch_axis = !same_axis || reverse_aligned;
if (must_switch_axis && w_cur_norm > angular_switch_speed_threshold_) {
angular_norm_planner_.setTargetVelocity(0.0);
} else {
current_angular_dir_base_ = w_target_dir;
angular_norm_planner_.setTargetVelocity(w_des_norm);
}
}
const double w_exec_norm = angular_norm_planner_.update(dt);
twist_base_.tail<3>() = current_angular_dir_base_ * w_exec_norm;
// ==================== 对最终 twist 做差分得到 acc / jerk ====================
if (dt > EPSILON) {
acceleration_base_ = (twist_base_ - prev_twist_base_) / dt;
jerk_base_ = (acceleration_base_ - prev_acceleration_base_) / dt;
} else {
acceleration_base_.setZero();
jerk_base_.setZero();
}
prev_twist_base_ = twist_base_;
prev_acceleration_base_ = acceleration_base_;
return twist_base_;
}
bool CartesianTwistLimiter::isMoving() const
{
return linear_norm_planner_.isMoving() || angular_norm_planner_.isMoving();
}
} // namespace cmvr

View File

@ -0,0 +1,732 @@
//
// Created by lgv on 2026/3/10.
//
#include "gtest/gtest.h"
#include <Eigen/Core>
#include <matplot/matplot.h>
#include "planner/cartesian_space_planner/include/cartesian_twist_limiter.h"
namespace cmvr
{
namespace
{
using Twist = CartesianTwistLimiter::Twist;
constexpr double kDt = 0.01;
constexpr double kComponentEps = 1e-8;
constexpr double kDirectionEps = 1e-6;
constexpr double kSwitchSpeedUpperBound = 0.05;
Twist makeTwist(double vx, double vy, double vz, double wx, double wy, double wz)
{
Twist twist = Twist::Zero();
twist << vx, vy, vz, wx, wy, wz;
return twist;
}
Eigen::Vector3d normalizedOrZero(const Eigen::Vector3d& value)
{
const double norm = value.norm();
if (norm <= kComponentEps) {
return Eigen::Vector3d::Zero();
}
return value / norm;
}
CartesianTwistLimiter makeLimiter()
{
CartesianTwistLimiter limiter;
limiter.setLinearConstraints(1.0, 1.0, 5.0);
limiter.setAngularConstraints(1.0, 1.0, 5.0);
limiter.initialize();
return limiter;
}
Twist linearTargetAtTime(double t)
{
if (t < 1.0) {
return makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
if (t < 3.5) {
return makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0);
}
if (t < 6.0) {
return makeTwist(-0.8, 0.6, 0.2, 0.0, 0.0, 0.0);
}
if (t < 8.5) {
return makeTwist(-0.7, 0.0, 0.0, 0.0, 0.0, 0.0);
}
return makeTwist(-0.7, 0.0, 0.0, 0.0, 0.0, 0.0);
}
Twist angularTargetAtTime(double t)
{
if (t < 1.0) {
return makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
if (t < 3.5) {
return makeTwist(0.0, 0.0, 0.0, 0.8, 0.0, 0.0);
}
if (t < 6.0) {
return makeTwist(0.0, 0.0, 0.0, -0.8, 0, 0);
}
if (t < 8.5) {
return makeTwist(0.0, 0.0, 0.0, -0.6, 0.0, 0.0);
}
return makeTwist(0.0, 0.0, 0.0, -0.6, 0.0, 0.0);
}
Twist synchronizeTargetAtTime(double t)
{
if (t < 1.0) {
return makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
if (t < 3.5) {
return makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0);
}
if (t < 6.0) {
return makeTwist(0.0, 0.7, 0.0, 0.0, 0.0, 0.0);
}
if (t < 8.0) {
return makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
return makeTwist(-0.6, 0.0, 0.0, 0.0, 0.0, 0.0);
}
} // namespace
TEST(CARTESIAN_TWIST_LIMITER_TEST, LinearDirectionRemainsLockedForFixedTarget)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
const Eigen::Vector3d expected_dir = normalizedOrZero(Eigen::Vector3d(0.8, 0.6, 0.0));
limiter.setTargetTwist(makeTwist(0.8, 0.6, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
double max_speed = 0.0;
for (int i = 0; i < 400; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
const Eigen::Vector3d linear = twist.head<3>();
max_speed = std::max(max_speed, linear.norm());
if (linear.norm() > kComponentEps) {
const Eigen::Vector3d dir = linear.normalized();
EXPECT_LT(dir.cross(expected_dir).norm(), kDirectionEps) << "step=" << i;
}
}
EXPECT_GT(max_speed, 0.5);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, LinearReverseStopsBeforeSwitchingDirection)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
double speed_before_switch = 0.0;
for (int i = 0; i < 200; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
if (twist.head<3>().norm() > 0.2) {
speed_before_switch = twist.head<3>().norm();
break;
}
}
ASSERT_GT(speed_before_switch, 0.2);
limiter.setTargetTwist(makeTwist(-0.8, 0.0, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
bool negative_x_seen = false;
double speed_when_negative_x_appears = 0.0;
for (int i = 0; i < 500; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
EXPECT_NEAR(twist.y(), 0.0, kComponentEps);
EXPECT_NEAR(twist.z(), 0.0, kComponentEps);
if (!negative_x_seen && twist.x() < -kComponentEps) {
negative_x_seen = true;
speed_when_negative_x_appears = twist.head<3>().norm();
break;
}
if (!negative_x_seen) {
EXPECT_GE(twist.x(), -kComponentEps);
}
}
ASSERT_TRUE(negative_x_seen);
EXPECT_LT(speed_when_negative_x_appears, kSwitchSpeedUpperBound);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, LinearNonCollinearSwitchStopsBeforeChangingAxis)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
for (int i = 0; i < 200; ++i) {
if (limiter.update(kDt, base_R_tool).head<3>().norm() > 0.2) {
break;
}
}
limiter.setTargetTwist(makeTwist(0.0, 0.8, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
bool y_seen = false;
double speed_when_y_appears = 0.0;
for (int i = 0; i < 500; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
EXPECT_NEAR(twist.z(), 0.0, kComponentEps);
if (!y_seen && std::abs(twist.y()) > kComponentEps) {
y_seen = true;
speed_when_y_appears = twist.head<3>().norm();
break;
}
if (!y_seen) {
EXPECT_NEAR(twist.y(), 0.0, kComponentEps);
EXPECT_GE(twist.x(), -kComponentEps);
}
}
ASSERT_TRUE(y_seen);
EXPECT_LT(speed_when_y_appears, kSwitchSpeedUpperBound);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, AngularNonCollinearSwitchStopsBeforeChangingAxis)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.0, 0.0, 0.0, 0.8, 0.0, 0.0), CartesianFrame::Base);
for (int i = 0; i < 200; ++i) {
if (limiter.update(kDt, base_R_tool).tail<3>().norm() > 0.2) {
break;
}
}
limiter.setTargetTwist(makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, 0.8), CartesianFrame::Base);
bool z_seen = false;
double speed_when_z_appears = 0.0;
for (int i = 0; i < 500; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
EXPECT_NEAR(twist(4), 0.0, kComponentEps);
if (!z_seen && std::abs(twist(5)) > kComponentEps) {
z_seen = true;
speed_when_z_appears = twist.tail<3>().norm();
break;
}
if (!z_seen) {
EXPECT_NEAR(twist(5), 0.0, kComponentEps);
EXPECT_GE(twist(3), -kComponentEps);
}
}
ASSERT_TRUE(z_seen);
EXPECT_LT(speed_when_z_appears, kSwitchSpeedUpperBound);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, StopKeepsCurrentLinearDirection)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.8, 0.6, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
Eigen::Vector3d moving_dir = Eigen::Vector3d::Zero();
for (int i = 0; i < 300; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
if (twist.head<3>().norm() > 0.2) {
moving_dir = twist.head<3>().normalized();
break;
}
}
ASSERT_GT(moving_dir.norm(), 0.5);
limiter.stop();
double final_speed = 0.0;
for (int i = 0; i < 400; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
final_speed = twist.head<3>().norm();
if (final_speed > kComponentEps) {
EXPECT_LT(twist.head<3>().normalized().cross(moving_dir).norm(), kDirectionEps)
<< "step=" << i;
}
}
EXPECT_LT(final_speed, 1e-4);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, SynchronizeWithoutKeepingTargetClearsOldCommand)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
for (int i = 0; i < 80; ++i) {
limiter.update(kDt, base_R_tool);
}
limiter.synchronize(Twist::Zero(), kDt, false);
EXPECT_NEAR(limiter.getTargetTwistBase().norm(), 0.0, kComponentEps);
for (int i = 0; i < 50; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
EXPECT_NEAR(twist.norm(), 0.0, kComponentEps) << "step=" << i;
}
EXPECT_FALSE(limiter.isMoving());
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, SynchronizeKeepingTargetContinuesTowardExistingCommand)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
limiter.setTargetTwist(makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
for (int i = 0; i < 120; ++i) {
limiter.update(kDt, base_R_tool);
}
ASSERT_GT(limiter.getTwistBase().x(), 0.2);
const Twist measured_twist = makeTwist(0.15, 0.0, 0.0, 0.0, 0.0, 0.0);
limiter.synchronize(measured_twist, kDt, true);
EXPECT_NEAR(limiter.getTwistBase().x(), 0.15, kComponentEps);
EXPECT_NEAR(limiter.getTwistBase().y(), 0.0, kComponentEps);
EXPECT_NEAR(limiter.getTwistBase().z(), 0.0, kComponentEps);
double max_resumed_speed = measured_twist.x();
for (int i = 0; i < 200; ++i) {
const Twist twist = limiter.update(kDt, base_R_tool);
EXPECT_NEAR(twist.y(), 0.0, kComponentEps);
EXPECT_NEAR(twist.z(), 0.0, kComponentEps);
max_resumed_speed = std::max(max_resumed_speed, twist.head<3>().norm());
if (max_resumed_speed > 0.4) {
break;
}
}
EXPECT_GT(max_resumed_speed, 0.4);
EXPECT_GT(limiter.getTargetTwistBase().x(), 0.7);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, EmergencyStopStopsFasterThanNormalStopAndAcceptsNewTarget)
{
CartesianTwistLimiter normal_limiter = makeLimiter();
CartesianTwistLimiter emergency_limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
const Twist forward_twist = makeTwist(0.8, 0.0, 0.0, 0.0, 0.0, 0.0);
normal_limiter.setTargetTwist(forward_twist, CartesianFrame::Base);
emergency_limiter.setTargetTwist(forward_twist, CartesianFrame::Base);
for (int i = 0; i < 250; ++i) {
normal_limiter.update(kDt, base_R_tool);
emergency_limiter.update(kDt, base_R_tool);
}
const double start_speed = normal_limiter.getTwistBase().head<3>().norm();
ASSERT_GT(start_speed, 0.2);
ASSERT_NEAR(emergency_limiter.getTwistBase().head<3>().norm(), start_speed, 1e-3);
normal_limiter.stop();
emergency_limiter.emergencyStop(3.0, 20.0);
int normal_stop_steps = -1;
int emergency_stop_steps = -1;
for (int i = 0; i < 500; ++i) {
const double normal_speed = normal_limiter.update(kDt, base_R_tool).head<3>().norm();
const double emergency_speed = emergency_limiter.update(kDt, base_R_tool).head<3>().norm();
if (normal_stop_steps < 0 && normal_speed < 1e-3) {
normal_stop_steps = i;
}
if (emergency_stop_steps < 0 && emergency_speed < 1e-3) {
emergency_stop_steps = i;
}
if (normal_stop_steps >= 0 && emergency_stop_steps >= 0) {
break;
}
}
ASSERT_GE(normal_stop_steps, 0);
ASSERT_GE(emergency_stop_steps, 0);
EXPECT_LT(emergency_stop_steps, normal_stop_steps);
const Twist restart_twist = makeTwist(-0.4, 0.0, 0.0, 0.0, 0.0, 0.0);
emergency_limiter.setTargetTwist(restart_twist, CartesianFrame::Base);
double restarted_speed = 0.0;
double restarted_x = 0.0;
for (int i = 0; i < 300; ++i) {
const Twist twist = emergency_limiter.update(kDt, base_R_tool);
restarted_speed = twist.head<3>().norm();
restarted_x = twist.x();
if (restarted_speed > 0.2) {
break;
}
}
EXPECT_GT(restarted_speed, 0.2);
EXPECT_LT(restarted_x, -0.2);
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, PlotLinearVelocityComponentsAndNorm)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
std::vector<double> time;
std::vector<double> vx;
std::vector<double> vy;
std::vector<double> vz;
std::vector<double> speed;
std::vector<double> target_speed;
std::vector<double> ax;
std::vector<double> ay;
std::vector<double> az;
std::vector<double> accel;
std::vector<double> jx;
std::vector<double> jy;
std::vector<double> jz;
std::vector<double> jerk;
constexpr double kEmergencyTime = 8.5;
constexpr double kRestartTime = 10.0;
constexpr double kTotalTime = 14.0;
const int steps = static_cast<int>(kTotalTime / kDt);
time.reserve(steps + 1);
vx.reserve(steps + 1);
vy.reserve(steps + 1);
vz.reserve(steps + 1);
speed.reserve(steps + 1);
target_speed.reserve(steps + 1);
ax.reserve(steps + 1);
ay.reserve(steps + 1);
az.reserve(steps + 1);
accel.reserve(steps + 1);
jx.reserve(steps + 1);
jy.reserve(steps + 1);
jz.reserve(steps + 1);
jerk.reserve(steps + 1);
bool emergency_stop_called = false;
bool restart_called = false;
for (int i = 0; i <= steps; ++i) {
const double t = i * kDt;
if (t < kEmergencyTime) {
limiter.setTargetTwist(linearTargetAtTime(t), CartesianFrame::Base);
} else if (!emergency_stop_called) {
limiter.emergencyStop(10.0, 50.0);
emergency_stop_called = true;
} else if (t >= kRestartTime && !restart_called) {
limiter.setTargetTwist(makeTwist(0.0, -0.6, 0.0, 0.0, 0.0, 0.0), CartesianFrame::Base);
restart_called = true;
}
const Twist twist = limiter.update(kDt, base_R_tool);
const Twist target = limiter.getTargetTwistBase();
const Twist acceleration = limiter.getAccelerationBase();
const Twist current_jerk = limiter.getJerkBase();
time.push_back(t);
vx.push_back(twist.x());
vy.push_back(twist.y());
vz.push_back(twist.z());
speed.push_back(twist.head<3>().norm());
target_speed.push_back(target.head<3>().norm());
ax.push_back(acceleration.x());
ay.push_back(acceleration.y());
az.push_back(acceleration.z());
accel.push_back(acceleration.head<3>().norm());
jx.push_back(current_jerk.x());
jy.push_back(current_jerk.y());
jz.push_back(current_jerk.z());
jerk.push_back(current_jerk.head<3>().norm());
}
using namespace matplot;
auto configure_axes = [](const axes_handle& axes) {
axes->line_width(1.5f);
grid(axes, on);
};
auto style_line = [](const auto& line, std::initializer_list<float> color, double width) {
line->line_width(width);
line->color(color);
};
auto fig = figure(true);
fig->size(1600, 1200);
fig->font_size(16);
auto ax_v = subplot(fig, std::array<float, 4>{0.07f, 0.69f, 0.88f, 0.24f});
hold(ax_v, on);
style_line(plot(ax_v, time, vx), {0.86f, 0.16f, 0.16f}, 3.0);
style_line(plot(ax_v, time, vy), {0.16f, 0.47f, 0.80f}, 3.0);
style_line(plot(ax_v, time, vz), {0.12f, 0.62f, 0.42f}, 3.0);
style_line(plot(ax_v, time, speed), {0.10f, 0.10f, 0.10f}, 3.5);
auto line_target_speed = plot(ax_v, time, target_speed);
line_target_speed->line_width(2.5);
line_target_speed->line_style("--");
line_target_speed->color({0.80f, 0.55f, 0.10f});
title(ax_v, "CartesianTwistLimiter Linear Velocity With Emergency Stop And Restart");
xlabel(ax_v, "time [s]");
ylabel(ax_v, "velocity [m/s]");
legend(ax_v, {"vx", "vy", "vz", "speed", "target speed"});
configure_axes(ax_v);
auto ax_a = subplot(fig, std::array<float, 4>{0.07f, 0.38f, 0.88f, 0.24f});
hold(ax_a, on);
style_line(plot(ax_a, time, ax), {0.86f, 0.16f, 0.16f}, 3.0);
style_line(plot(ax_a, time, ay), {0.16f, 0.47f, 0.80f}, 3.0);
style_line(plot(ax_a, time, az), {0.12f, 0.62f, 0.42f}, 3.0);
style_line(plot(ax_a, time, accel), {0.10f, 0.10f, 0.10f}, 3.5);
title(ax_a, "CartesianTwistLimiter Linear Acceleration");
xlabel(ax_a, "time [s]");
ylabel(ax_a, "acceleration [m/s^2]");
legend(ax_a, {"ax", "ay", "az", "acc norm"});
configure_axes(ax_a);
auto ax_j = subplot(fig, std::array<float, 4>{0.07f, 0.07f, 0.88f, 0.24f});
hold(ax_j, on);
style_line(plot(ax_j, time, jx), {0.86f, 0.16f, 0.16f}, 3.0);
style_line(plot(ax_j, time, jy), {0.16f, 0.47f, 0.80f}, 3.0);
style_line(plot(ax_j, time, jz), {0.12f, 0.62f, 0.42f}, 3.0);
style_line(plot(ax_j, time, jerk), {0.10f, 0.10f, 0.10f}, 3.5);
title(ax_j, "CartesianTwistLimiter Linear Jerk");
xlabel(ax_j, "time [s]");
ylabel(ax_j, "jerk [m/s^3]");
legend(ax_j, {"jx", "jy", "jz", "jerk norm"});
configure_axes(ax_j);
show(fig);
cla();
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, PlotAngularVelocityComponentsAndNorm)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
std::vector<double> time;
std::vector<double> wx;
std::vector<double> wy;
std::vector<double> wz;
std::vector<double> omega;
std::vector<double> target_omega;
constexpr double kEmergencyTime = 8.5;
constexpr double kRestartTime = 10.0;
constexpr double kTotalTime = 14.0;
const int steps = static_cast<int>(kTotalTime / kDt);
time.reserve(steps + 1);
wx.reserve(steps + 1);
wy.reserve(steps + 1);
wz.reserve(steps + 1);
omega.reserve(steps + 1);
target_omega.reserve(steps + 1);
bool emergency_stop_called = false;
bool restart_called = false;
for (int i = 0; i <= steps; ++i) {
const double t = i * kDt;
if (t < kEmergencyTime) {
limiter.setTargetTwist(angularTargetAtTime(t), CartesianFrame::Base);
} else if (!emergency_stop_called) {
limiter.emergencyStop(10.0, 50.0);
emergency_stop_called = true;
} else if (t >= kRestartTime && !restart_called) {
limiter.setTargetTwist(makeTwist(0.0, 0.0, 0.0, 0.0, 0.0, -0.5), CartesianFrame::Base);
restart_called = true;
}
const Twist twist = limiter.update(kDt, base_R_tool);
const Twist target = limiter.getTargetTwistBase();
time.push_back(t);
wx.push_back(twist(3));
wy.push_back(twist(4));
wz.push_back(twist(5));
omega.push_back(twist.tail<3>().norm());
target_omega.push_back(target.tail<3>().norm());
}
using namespace matplot;
auto configure_axes = [](const axes_handle& axes) {
axes->line_width(1.5f);
grid(axes, on);
};
auto style_line = [](const auto& line, std::initializer_list<float> color, double width) {
line->line_width(width);
line->color(color);
};
auto fig = figure(true);
fig->size(1600, 520);
fig->font_size(16);
auto ax = subplot(fig, std::array<float, 4>{0.07f, 0.14f, 0.88f, 0.74f});
hold(ax, on);
style_line(plot(ax, time, wx), {0.86f, 0.16f, 0.16f}, 3.0);
style_line(plot(ax, time, wy), {0.16f, 0.47f, 0.80f}, 3.0);
style_line(plot(ax, time, wz), {0.12f, 0.62f, 0.42f}, 3.0);
style_line(plot(ax, time, omega), {0.10f, 0.10f, 0.10f}, 3.5);
auto line_target_omega = plot(ax, time, target_omega);
line_target_omega->line_width(2.5);
line_target_omega->line_style("--");
line_target_omega->color({0.80f, 0.55f, 0.10f});
title(ax, "CartesianTwistLimiter Angular Velocity With Emergency Stop And Restart");
xlabel(ax, "time [s]");
ylabel(ax, "angular velocity [rad/s]");
legend(ax, {"wx", "wy", "wz", "omega", "target omega"});
configure_axes(ax);
show(fig);
cla();
}
TEST(CARTESIAN_TWIST_LIMITER_TEST, PlotSynchronizeTrackingWithMeasuredTwist)
{
CartesianTwistLimiter limiter = makeLimiter();
const Eigen::Matrix3d base_R_tool = Eigen::Matrix3d::Identity();
Twist measured_twist = Twist::Zero();
std::vector<double> time;
std::vector<double> target_speed;
std::vector<double> commanded_speed;
std::vector<double> measured_speed;
std::vector<double> commanded_vx;
std::vector<double> commanded_vy;
std::vector<double> measured_vx;
std::vector<double> measured_vy;
std::vector<double> tracking_error;
std::vector<double> acc_norm;
std::vector<double> jerk_norm;
constexpr double kTotalTime = 10.0;
constexpr double kTrackingTau = 0.08;
const double alpha = kDt / (kTrackingTau + kDt);
const int steps = static_cast<int>(kTotalTime / kDt);
time.reserve(steps + 1);
target_speed.reserve(steps + 1);
commanded_speed.reserve(steps + 1);
measured_speed.reserve(steps + 1);
commanded_vx.reserve(steps + 1);
commanded_vy.reserve(steps + 1);
measured_vx.reserve(steps + 1);
measured_vy.reserve(steps + 1);
tracking_error.reserve(steps + 1);
acc_norm.reserve(steps + 1);
jerk_norm.reserve(steps + 1);
for (int i = 0; i <= steps; ++i) {
const double t = i * kDt;
const Twist target = synchronizeTargetAtTime(t);
limiter.synchronize(measured_twist, kDt, true);
limiter.setTargetTwist(target, CartesianFrame::Base);
const Twist commanded = limiter.update(kDt, base_R_tool);
measured_twist += alpha * (commanded - measured_twist);
time.push_back(t);
target_speed.push_back(target.head<3>().norm());
commanded_speed.push_back(commanded.head<3>().norm());
measured_speed.push_back(measured_twist.head<3>().norm());
commanded_vx.push_back(commanded.x());
commanded_vy.push_back(commanded.y());
measured_vx.push_back(measured_twist.x());
measured_vy.push_back(measured_twist.y());
tracking_error.push_back((commanded.head<3>() - measured_twist.head<3>()).norm());
acc_norm.push_back(limiter.getAccelerationBase().head<3>().norm());
jerk_norm.push_back(limiter.getJerkBase().head<3>().norm());
}
using namespace matplot;
auto configure_axes = [](const axes_handle& axes) {
axes->line_width(1.5f);
grid(axes, on);
};
auto style_line = [](const auto& line, std::initializer_list<float> color, double width) {
line->line_width(width);
line->color(color);
};
auto fig = figure(true);
fig->size(1600, 1200);
fig->font_size(16);
auto ax_speed = subplot(fig, std::array<float, 4>{0.07f, 0.69f, 0.88f, 0.24f});
hold(ax_speed, on);
auto line_target = plot(ax_speed, time, target_speed);
line_target->line_width(2.5);
line_target->line_style("--");
line_target->color({0.80f, 0.55f, 0.10f});
style_line(plot(ax_speed, time, commanded_speed), {0.10f, 0.10f, 0.10f}, 3.5);
style_line(plot(ax_speed, time, measured_speed), {0.55f, 0.12f, 0.72f}, 3.0);
title(ax_speed, "Synchronize: target / commanded / measured speed");
xlabel(ax_speed, "time [s]");
ylabel(ax_speed, "speed [m/s]");
legend(ax_speed, {"target speed", "commanded speed", "measured speed"});
configure_axes(ax_speed);
auto ax_components = subplot(fig, std::array<float, 4>{0.07f, 0.38f, 0.88f, 0.24f});
hold(ax_components, on);
style_line(plot(ax_components, time, commanded_vx), {0.86f, 0.16f, 0.16f}, 3.0);
auto line_measured_vx = plot(ax_components, time, measured_vx);
line_measured_vx->line_width(2.5);
line_measured_vx->line_style("--");
line_measured_vx->color({0.86f, 0.16f, 0.16f});
style_line(plot(ax_components, time, commanded_vy), {0.16f, 0.47f, 0.80f}, 3.0);
auto line_measured_vy = plot(ax_components, time, measured_vy);
line_measured_vy->line_width(2.5);
line_measured_vy->line_style("--");
line_measured_vy->color({0.16f, 0.47f, 0.80f});
title(ax_components, "Synchronize: commanded vs measured components");
xlabel(ax_components, "time [s]");
ylabel(ax_components, "velocity [m/s]");
legend(ax_components, {"cmd vx", "meas vx", "cmd vy", "meas vy"});
configure_axes(ax_components);
auto ax_dynamics = subplot(fig, std::array<float, 4>{0.07f, 0.07f, 0.88f, 0.24f});
hold(ax_dynamics, on);
style_line(plot(ax_dynamics, time, tracking_error), {0.10f, 0.10f, 0.10f}, 3.5);
style_line(plot(ax_dynamics, time, acc_norm), {0.12f, 0.62f, 0.42f}, 3.0);
style_line(plot(ax_dynamics, time, jerk_norm), {0.55f, 0.12f, 0.72f}, 3.0);
title(ax_dynamics, "Synchronize: tracking error / acceleration / jerk");
xlabel(ax_dynamics, "time [s]");
ylabel(ax_dynamics, "norm");
legend(ax_dynamics, {"|cmd - meas|", "acc norm", "jerk norm"});
configure_axes(ax_dynamics);
show(fig);
cla();
}
} // namespace cmvr

View File

@ -0,0 +1,100 @@
//
// Created by lgv on 2026/3/10.
//
#pragma once
#include "s_curve_velocity_planner.h"
#include <algorithm>
#include <cmath>
namespace cmvr
{
struct SCurvePositionPlannerState
{
double position;
double velocity;
double acceleration;
double jerk;
double target_position;
bool is_moving;
SCurvePositionPlannerState()
: position(0.0)
, velocity(0.0)
, acceleration(0.0)
, jerk(0.0)
, target_position(0.0)
, is_moving(false)
{}
};
/**
* @brief
*
*
* - position_error -> desired_velocity
* - SCurveVelocityPlanner1D jerk-limited
*
* profile
*/
class SCurvePositionPlanner1D
{
public:
SCurvePositionPlanner1D(double max_velocity = 3.0,
double max_acceleration = 10.0,
double max_jerk = 50.0);
void setConstraints(double max_velocity, double max_acceleration, double max_jerk);
void getConstraints(double& max_velocity, double& max_acceleration, double& max_jerk) const;
void setPositionGain(double position_gain);
double getPositionGain() const { return position_gain_; }
void initialize(double position, double velocity = 0.0, double acceleration = 0.0);
void reset();
void setTarget(double target_position);
double update(double dt);
const SCurvePositionPlannerState& getState() const { return state_; }
double getPosition() const { return state_.position; }
double getVelocity() const { return state_.velocity; }
double getAcceleration() const { return state_.acceleration; }
double getJerk() const { return state_.jerk; }
double getTargetPosition() const { return state_.target_position; }
bool isMoving() const { return state_.is_moving; }
private:
double max_velocity_;
double max_acceleration_;
double max_jerk_;
SCurvePositionPlannerState state_;
SCurveVelocityPlanner1D velocity_planner_;
double position_gain_;
static constexpr double EPSILON = 1e-9;
static constexpr double VELOCITY_THRESHOLD = 1e-6;
static constexpr double ACCELERATION_THRESHOLD = 1e-6;
static constexpr double POSITION_THRESHOLD = 1e-7;
double computeDesiredVelocity(double position_error) const;
double computePlannerStoppingDistance(double velocity, double acceleration) const;
static double clamp(double value, double min_val, double max_val)
{
return std::max(min_val, std::min(max_val, value));
}
static double sign(double value)
{
if (value > EPSILON) return 1.0;
if (value < -EPSILON) return -1.0;
return 0.0;
}
};
} // namespace cmvr

View File

@ -0,0 +1,240 @@
//
// Created by lgv on 2026/3/9.
//
#pragma once
#include <algorithm>
#include <cmath>
#include <vector>
namespace cmvr
{
/**
* @brief S 线
*
* (v0, a0) (vf, 0) 3 jerk-limited profile
*
* seg1: jerk = j1, duration = t1
* seg2: jerk = j2, duration = t2 ( j2 = 0)
* seg3: jerk = j3, duration = t3
*
* j1/j3 ±j_maxj2 0
*/
struct SCurveVelocityProfile
{
double t1;
double t2;
double t3;
double total_time;
double j1;
double j2;
double j3;
double v0;
double a0;
double vf;
bool valid;
SCurveVelocityProfile()
: t1(0.0), t2(0.0), t3(0.0)
, total_time(0.0)
, j1(0.0), j2(0.0), j3(0.0)
, v0(0.0), a0(0.0), vf(0.0)
, valid(false)
{}
};
/**
* @brief S 线
*/
struct SCurveVelocityPlannerState
{
double velocity;
double acceleration;
double jerk;
double target_velocity;
double elapsed_time;
bool has_active_profile;
bool is_moving;
SCurveVelocityPlannerState()
: velocity(0.0)
, acceleration(0.0)
, jerk(0.0)
, target_velocity(0.0)
, elapsed_time(0.0)
, has_active_profile(false)
, is_moving(false)
{}
};
/**
* @brief S 线
*
*
* - setTargetVelocity(v):
* - update(dt): active profile
* - overwriteState(v,a): profile
* - synchronizeAndReplan(v,a):
*
*
* - (v0, a0) (vf, 0)
* - |v| <= v_max, |a| <= a_max, |j| <= j_max
*/
class SCurveVelocityPlanner1D
{
public:
SCurveVelocityPlanner1D(double max_velocity = 1.0,
double max_acceleration = 1.0,
double max_jerk = 5.0);
void setConstraints(double max_velocity, double max_acceleration, double max_jerk);
void getConstraints(double& max_velocity, double& max_acceleration, double& max_jerk) const;
/**
* @brief
*
*
*/
void setTargetReplanThreshold(double threshold);
/**
* @brief
*
* profile
* synchronizeAndReplan() profile
*/
void setSynchronizeReplanThreshold(double threshold);
void initialize(double velocity = 0.0, double acceleration = 0.0);
void reset();
/**
* @brief profile
*
*
* -
* -
*/
void overwriteState(double velocity,
double acceleration = 0.0,
bool keep_target_velocity = true);
/**
* @brief
*
*
*/
void synchronizeAndReplan(double velocity,
double acceleration = 0.0);
/**
* @brief
*/
void setTargetVelocity(double target_velocity);
/**
* @brief
*/
void stop() { setTargetVelocity(0.0); }
/**
* @brief
* @param dt
* @return
*/
double update(double dt);
/**
* @brief
*/
SCurveVelocityProfile calculateProfile(double start_velocity,
double end_velocity,
double start_acceleration = 0.0) const;
/**
* @brief t
*/
double getVelocityAtTime(const SCurveVelocityProfile& profile, double t) const;
/**
* @brief t
*/
double getAccelerationAtTime(const SCurveVelocityProfile& profile, double t) const;
/**
* @brief t jerk
*/
double getJerkAtTime(const SCurveVelocityProfile& profile, double t) const;
/**
* @brief
*/
void generateTrajectory(const SCurveVelocityProfile& profile, double dt,
std::vector<double>& velocities,
std::vector<double>& accelerations,
std::vector<double>& jerks) const;
const SCurveVelocityPlannerState& getState() const { return state_; }
const SCurveVelocityProfile& getActiveProfile() const { return active_profile_; }
double getVelocity() const { return state_.velocity; }
double getAcceleration() const { return state_.acceleration; }
double getJerk() const { return state_.jerk; }
double getTargetVelocity() const { return state_.target_velocity; }
bool hasActiveProfile() const { return state_.has_active_profile; }
bool isMoving() const { return state_.is_moving; }
private:
double max_velocity_;
double max_acceleration_;
double max_jerk_;
double target_replan_threshold_;
double synchronize_replan_threshold_;
SCurveVelocityPlannerState state_;
SCurveVelocityProfile active_profile_;
static constexpr double EPSILON = 1e-9;
static constexpr double VELOCITY_THRESHOLD = 1e-6;
static constexpr double ACCELERATION_THRESHOLD = 1e-6;
static constexpr double DEFAULT_TARGET_REPLAN_THRESHOLD = 1e-9;
static constexpr double DEFAULT_SYNCHRONIZE_REPLAN_THRESHOLD = 5e-2;
private:
void updateIsMovingFlag();
/**
* @brief profile
*/
bool isVelocityLimitSatisfied(const SCurveVelocityProfile& profile) const;
/**
* @brief
*/
void integrateWholeProfile(const SCurveVelocityProfile& profile,
double& v_end,
double& a_end) const;
static double clamp(double value, double min_val, double max_val)
{
return std::max(min_val, std::min(max_val, value));
}
static double sign(double value)
{
if (value > EPSILON) return 1.0;
if (value < -EPSILON) return -1.0;
return 0.0;
}
};
} // namespace cmvr

View File

@ -0,0 +1,191 @@
//
// Created by lgv on 2026/3/10.
//
#include "../include/s_curve_position_planner.h"
#include <algorithm>
#include <cmath>
namespace cmvr
{
SCurvePositionPlanner1D::SCurvePositionPlanner1D(double max_velocity,
double max_acceleration,
double max_jerk)
: max_velocity_(std::abs(max_velocity))
, max_acceleration_(std::abs(max_acceleration))
, max_jerk_(std::abs(max_jerk))
, velocity_planner_(max_velocity_, max_acceleration_, max_jerk_)
, position_gain_(1.0)
{
velocity_planner_.setTargetReplanThreshold(std::max(1e-3, 0.02 * max_velocity_));
reset();
}
void SCurvePositionPlanner1D::setConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
max_velocity_ = std::abs(max_velocity);
max_acceleration_ = std::abs(max_acceleration);
max_jerk_ = std::abs(max_jerk);
velocity_planner_.setConstraints(max_velocity_, max_acceleration_, max_jerk_);
velocity_planner_.setTargetReplanThreshold(std::max(1e-3, 0.02 * max_velocity_));
}
void SCurvePositionPlanner1D::getConstraints(double& max_velocity,
double& max_acceleration,
double& max_jerk) const
{
max_velocity = max_velocity_;
max_acceleration = max_acceleration_;
max_jerk = max_jerk_;
}
void SCurvePositionPlanner1D::setPositionGain(double position_gain)
{
position_gain_ = std::max(0.0, position_gain);
}
void SCurvePositionPlanner1D::initialize(double position, double velocity, double acceleration)
{
state_.position = position;
velocity_planner_.initialize(velocity, acceleration);
state_.velocity = velocity_planner_.getVelocity();
state_.acceleration = velocity_planner_.getAcceleration();
state_.jerk = 0.0;
state_.target_position = position;
state_.is_moving = false;
}
void SCurvePositionPlanner1D::reset()
{
state_ = SCurvePositionPlannerState();
velocity_planner_.reset();
}
void SCurvePositionPlanner1D::setTarget(double target_position)
{
state_.target_position = target_position;
}
double SCurvePositionPlanner1D::update(double dt)
{
if (dt <= 0.0 || dt > 0.1) {
return state_.position;
}
const double position_error = state_.target_position - state_.position;
if (std::abs(position_error) < POSITION_THRESHOLD &&
std::abs(velocity_planner_.getVelocity()) < VELOCITY_THRESHOLD &&
std::abs(velocity_planner_.getAcceleration()) < ACCELERATION_THRESHOLD) {
velocity_planner_.overwriteState(0.0, 0.0, false);
state_.position = state_.target_position;
state_.velocity = 0.0;
state_.acceleration = 0.0;
state_.jerk = 0.0;
state_.is_moving = false;
return state_.position;
}
velocity_planner_.setTargetVelocity(computeDesiredVelocity(position_error));
const double old_velocity = velocity_planner_.getVelocity();
const double new_velocity = velocity_planner_.update(dt);
state_.velocity = new_velocity;
state_.acceleration = velocity_planner_.getAcceleration();
state_.jerk = velocity_planner_.getJerk();
state_.position += 0.5 * (old_velocity + new_velocity) * dt;
const double updated_error = state_.target_position - state_.position;
if (std::abs(updated_error) < POSITION_THRESHOLD &&
std::abs(state_.velocity) < VELOCITY_THRESHOLD &&
std::abs(state_.acceleration) < ACCELERATION_THRESHOLD) {
velocity_planner_.overwriteState(0.0, 0.0, false);
state_.position = state_.target_position;
state_.velocity = 0.0;
state_.acceleration = 0.0;
state_.jerk = 0.0;
state_.is_moving = false;
return state_.position;
}
state_.is_moving = velocity_planner_.isMoving() ||
std::abs(updated_error) > POSITION_THRESHOLD;
return state_.position;
}
double SCurvePositionPlanner1D::computeDesiredVelocity(double position_error) const
{
if (std::abs(position_error) <= POSITION_THRESHOLD) {
return 0.0;
}
const double proportional_velocity =
clamp(position_gain_ * position_error, -max_velocity_, max_velocity_);
const double current_velocity = velocity_planner_.getVelocity();
const double current_acceleration = velocity_planner_.getAcceleration();
const double stopping_distance =
computePlannerStoppingDistance(current_velocity, current_acceleration);
if (std::abs(current_velocity) > VELOCITY_THRESHOLD &&
sign(current_velocity) != sign(position_error)) {
return 0.0;
}
if (std::abs(current_velocity) > VELOCITY_THRESHOLD &&
sign(current_velocity) == sign(position_error) &&
std::abs(position_error) <= std::abs(stopping_distance) * 1.05) {
return 0.0;
}
double low = 0.0;
double high = max_velocity_;
for (int i = 0; i < 40; ++i) {
const double mid = 0.5 * (low + high);
const double distance =
std::abs(computePlannerStoppingDistance(sign(position_error) * mid, 0.0));
if (distance <= std::abs(position_error)) {
low = mid;
} else {
high = mid;
}
}
return sign(position_error) *
std::min(std::abs(proportional_velocity), low);
}
double SCurvePositionPlanner1D::computePlannerStoppingDistance(double velocity,
double acceleration) const
{
if (std::abs(velocity) <= VELOCITY_THRESHOLD &&
std::abs(acceleration) <= ACCELERATION_THRESHOLD) {
return 0.0;
}
const auto profile = velocity_planner_.calculateProfile(velocity, 0.0, acceleration);
if (!profile.valid || profile.total_time <= EPSILON) {
return 0.0;
}
const int steps = std::max(16, static_cast<int>(std::ceil(profile.total_time / 0.002)));
const double dt = profile.total_time / static_cast<double>(steps);
double distance = 0.0;
double previous_time = 0.0;
double previous_velocity = velocity_planner_.getVelocityAtTime(profile, 0.0);
for (int i = 1; i <= steps; ++i) {
const double t = (i == steps) ? profile.total_time : i * dt;
const double current_velocity = velocity_planner_.getVelocityAtTime(profile, t);
distance += 0.5 * (previous_velocity + current_velocity) * (t - previous_time);
previous_time = t;
previous_velocity = current_velocity;
}
return distance;
}
} // namespace cmvr

View File

@ -0,0 +1,562 @@
//
// Created by lgv on 2026/3/9.
//
#include "../include/s_curve_velocity_planner.h"
#include <cmath>
#include <limits>
namespace cmvr
{
SCurveVelocityPlanner1D::SCurveVelocityPlanner1D(double max_velocity,
double max_acceleration,
double max_jerk)
: max_velocity_(std::abs(max_velocity))
, max_acceleration_(std::abs(max_acceleration))
, max_jerk_(std::abs(max_jerk))
, target_replan_threshold_(DEFAULT_TARGET_REPLAN_THRESHOLD)
, synchronize_replan_threshold_(DEFAULT_SYNCHRONIZE_REPLAN_THRESHOLD)
{
reset();
}
void SCurveVelocityPlanner1D::setConstraints(double max_velocity,
double max_acceleration,
double max_jerk)
{
max_velocity_ = std::abs(max_velocity);
max_acceleration_ = std::abs(max_acceleration);
max_jerk_ = std::abs(max_jerk);
state_.velocity = clamp(state_.velocity, -max_velocity_, max_velocity_);
state_.acceleration = clamp(state_.acceleration, -max_acceleration_, max_acceleration_);
state_.target_velocity = clamp(state_.target_velocity, -max_velocity_, max_velocity_);
if (state_.has_active_profile) {
active_profile_ = calculateProfile(state_.velocity,
state_.target_velocity,
state_.acceleration);
state_.elapsed_time = 0.0;
state_.has_active_profile = active_profile_.valid && active_profile_.total_time > EPSILON;
}
updateIsMovingFlag();
}
void SCurveVelocityPlanner1D::getConstraints(double& max_velocity,
double& max_acceleration,
double& max_jerk) const
{
max_velocity = max_velocity_;
max_acceleration = max_acceleration_;
max_jerk = max_jerk_;
}
void SCurveVelocityPlanner1D::setTargetReplanThreshold(double threshold)
{
target_replan_threshold_ = std::max(0.0, threshold);
}
void SCurveVelocityPlanner1D::setSynchronizeReplanThreshold(double threshold)
{
synchronize_replan_threshold_ = std::max(0.0, threshold);
}
void SCurveVelocityPlanner1D::initialize(double velocity, double acceleration)
{
state_ = SCurveVelocityPlannerState();
state_.velocity = clamp(velocity, -max_velocity_, max_velocity_);
state_.acceleration = clamp(acceleration, -max_acceleration_, max_acceleration_);
state_.jerk = 0.0;
state_.target_velocity = state_.velocity;
state_.elapsed_time = 0.0;
state_.has_active_profile = false;
active_profile_ = SCurveVelocityProfile();
active_profile_.v0 = state_.velocity;
active_profile_.a0 = state_.acceleration;
active_profile_.vf = state_.velocity;
active_profile_.valid = false;
updateIsMovingFlag();
}
void SCurveVelocityPlanner1D::reset()
{
state_ = SCurveVelocityPlannerState();
active_profile_ = SCurveVelocityProfile();
}
void SCurveVelocityPlanner1D::overwriteState(double velocity,
double acceleration,
bool keep_target_velocity)
{
state_.velocity = clamp(velocity, -max_velocity_, max_velocity_);
state_.acceleration = clamp(acceleration, -max_acceleration_, max_acceleration_);
state_.jerk = 0.0;
state_.elapsed_time = 0.0;
state_.has_active_profile = false;
if (!keep_target_velocity) {
state_.target_velocity = state_.velocity;
} else {
state_.target_velocity = clamp(state_.target_velocity, -max_velocity_, max_velocity_);
}
active_profile_ = SCurveVelocityProfile();
active_profile_.v0 = state_.velocity;
active_profile_.a0 = state_.acceleration;
active_profile_.vf = state_.target_velocity;
active_profile_.valid = false;
updateIsMovingFlag();
}
void SCurveVelocityPlanner1D::synchronizeAndReplan(double velocity,
double acceleration)
{
const double measured_velocity = clamp(velocity, -max_velocity_, max_velocity_);
const double measured_acceleration =
clamp(acceleration, -max_acceleration_, max_acceleration_);
if (!state_.has_active_profile &&
std::abs(measured_velocity - state_.target_velocity) <= VELOCITY_THRESHOLD) {
state_.velocity = state_.target_velocity;
state_.acceleration = 0.0;
state_.jerk = 0.0;
updateIsMovingFlag();
return;
}
// 如果测量值已经基本落在当前采样状态上,就继续沿现有 profile 走。
// 否则每拍都从同一目标重规划,会把已经进入的 jerk phase 反复打断。
if (state_.has_active_profile &&
std::abs(measured_velocity - state_.velocity) <= synchronize_replan_threshold_) {
state_.velocity = measured_velocity;
state_.acceleration = measured_acceleration;
state_.jerk = getJerkAtTime(active_profile_, state_.elapsed_time);
updateIsMovingFlag();
return;
}
state_.velocity = measured_velocity;
state_.acceleration = measured_acceleration;
state_.jerk = 0.0;
active_profile_ = calculateProfile(state_.velocity,
state_.target_velocity,
state_.acceleration);
state_.elapsed_time = 0.0;
state_.has_active_profile = active_profile_.total_time > EPSILON;
updateIsMovingFlag();
}
void SCurveVelocityPlanner1D::setTargetVelocity(double target_velocity)
{
const double new_target = clamp(target_velocity, -max_velocity_, max_velocity_);
const bool same_target =
std::abs(new_target - state_.target_velocity) <= target_replan_threshold_;
if (same_target &&
state_.has_active_profile) {
return;
}
if (same_target &&
!state_.has_active_profile &&
std::abs(state_.velocity - new_target) <= VELOCITY_THRESHOLD &&
std::abs(state_.acceleration) <= ACCELERATION_THRESHOLD) {
return;
}
state_.target_velocity = new_target;
active_profile_ = calculateProfile(state_.velocity,
state_.target_velocity,
state_.acceleration);
state_.elapsed_time = 0.0;
state_.has_active_profile = active_profile_.valid && active_profile_.total_time > EPSILON;
updateIsMovingFlag();
}
double SCurveVelocityPlanner1D::getVelocityAtTime(const SCurveVelocityProfile& profile, double t) const
{
if (!profile.valid) {
return profile.v0;
}
if (t <= 0.0) {
return profile.v0;
}
if (t >= profile.total_time) {
return profile.vf;
}
double v = profile.v0;
double a = profile.a0;
auto process_segment = [&](double dt, double jerk) {
v += a * dt + 0.5 * jerk * dt * dt;
a += jerk * dt;
};
// seg1
if (t <= profile.t1) {
process_segment(t, profile.j1);
return v;
}
process_segment(profile.t1, profile.j1);
// seg2
const double t_after_1 = t - profile.t1;
if (t_after_1 <= profile.t2) {
process_segment(t_after_1, profile.j2);
return v;
}
process_segment(profile.t2, profile.j2);
// seg3
const double t_after_2 = t_after_1 - profile.t2;
process_segment(t_after_2, profile.j3);
return v;
}
double SCurveVelocityPlanner1D::getAccelerationAtTime(const SCurveVelocityProfile& profile, double t) const
{
if (!profile.valid) {
return profile.a0;
}
if (t <= 0.0) {
return profile.a0;
}
if (t >= profile.total_time) {
return 0.0;
}
double a = profile.a0;
auto process_segment = [&](double dt, double jerk) {
a += jerk * dt;
};
// seg1
if (t <= profile.t1) {
process_segment(t, profile.j1);
return a;
}
process_segment(profile.t1, profile.j1);
// seg2
const double t_after_1 = t - profile.t1;
if (t_after_1 <= profile.t2) {
process_segment(t_after_1, profile.j2);
return a;
}
process_segment(profile.t2, profile.j2);
// seg3
const double t_after_2 = t_after_1 - profile.t2;
process_segment(t_after_2, profile.j3);
return a;
}
double SCurveVelocityPlanner1D::getJerkAtTime(const SCurveVelocityProfile& profile, double t) const
{
if (!profile.valid) {
return 0.0;
}
if (t <= 0.0 || t >= profile.total_time) {
return 0.0;
}
if (t <= profile.t1) {
return profile.j1;
}
if (t <= profile.t1 + profile.t2) {
return profile.j2;
}
return profile.j3;
}
void SCurveVelocityPlanner1D::integrateWholeProfile(const SCurveVelocityProfile& profile,
double& v_end,
double& a_end) const
{
double v = profile.v0;
double a = profile.a0;
auto process_segment = [&](double dt, double jerk) {
v += a * dt + 0.5 * jerk * dt * dt;
a += jerk * dt;
};
process_segment(profile.t1, profile.j1);
process_segment(profile.t2, profile.j2);
process_segment(profile.t3, profile.j3);
v_end = v;
a_end = a;
}
bool SCurveVelocityPlanner1D::isVelocityLimitSatisfied(const SCurveVelocityProfile& profile) const
{
if (!profile.valid) {
return true;
}
std::vector<double> check_times;
check_times.reserve(8);
check_times.push_back(0.0);
check_times.push_back(profile.t1);
check_times.push_back(profile.t1 + profile.t2);
check_times.push_back(profile.total_time);
// seg1 内部若 acceleration 过零,则 velocity 可能在段内出现极值
if (std::abs(profile.j1) > EPSILON && profile.t1 > EPSILON) {
const double tz = -profile.a0 / profile.j1;
if (tz > EPSILON && tz < profile.t1 - EPSILON) {
check_times.push_back(tz);
}
}
for (double t : check_times) {
const double v = getVelocityAtTime(profile, t);
if (std::abs(v) > max_velocity_ + 1e-7) {
return false;
}
}
return true;
}
SCurveVelocityProfile SCurveVelocityPlanner1D::calculateProfile(double start_velocity,
double end_velocity,
double start_acceleration) const
{
SCurveVelocityProfile best;
best.v0 = clamp(start_velocity, -max_velocity_, max_velocity_);
best.a0 = clamp(start_acceleration, -max_acceleration_, max_acceleration_);
best.vf = clamp(end_velocity, -max_velocity_, max_velocity_);
if (max_jerk_ <= EPSILON || max_acceleration_ <= EPSILON) {
// 退化情况:这里不做特殊退化规划,直接返回 invalid
return best;
}
const double v0 = best.v0;
const double a0 = best.a0;
const double vf = best.vf;
// 目标方向坐标尽量统一到“signed frame 下 Δv >= 0”
double s = sign(vf - v0);
if (std::abs(vf - v0) <= VELOCITY_THRESHOLD) {
s = 1.0;
}
const double dv = s * (vf - v0); // >= 0
const double a0s = s * a0; // signed frame 下的初始 acceleration
const double j = max_jerk_;
const double amax = max_acceleration_;
auto normalize_nonnegative = [](double x) {
return (x < 0.0 && x > -1e-10) ? 0.0 : x;
};
auto try_candidate = [&](double t1, double t2, double t3,
double j1s, double j2s, double j3s) {
t1 = normalize_nonnegative(t1);
t2 = normalize_nonnegative(t2);
t3 = normalize_nonnegative(t3);
if (t1 < 0.0 || t2 < 0.0 || t3 < 0.0) {
return;
}
SCurveVelocityProfile cand;
cand.t1 = t1;
cand.t2 = t2;
cand.t3 = t3;
cand.total_time = t1 + t2 + t3;
cand.j1 = s * j1s;
cand.j2 = s * j2s;
cand.j3 = s * j3s;
cand.v0 = v0;
cand.a0 = a0;
cand.vf = vf;
cand.valid = true;
double vend = 0.0;
double aend = 0.0;
integrateWholeProfile(cand, vend, aend);
if (std::abs(vend - vf) > 1e-5) {
return;
}
if (std::abs(aend) > 1e-5) {
return;
}
if (!isVelocityLimitSatisfied(cand)) {
return;
}
if (!best.valid || cand.total_time < best.total_time) {
best = cand;
}
};
// ---------------- UDU 三角形(无平台) ----------------
{
// Δv = (2A^2 - a0^2)/(2j)
const double A2 = 0.5 * (2.0 * j * dv + a0s * a0s);
if (A2 >= -1e-10) {
const double A = std::sqrt(std::max(0.0, A2));
if (A <= amax + 1e-10 && A >= a0s - 1e-10) {
const double t1 = (A - a0s) / j;
const double t2 = 0.0;
const double t3 = A / j;
try_candidate(t1, t2, t3, +j, 0.0, -j);
}
}
}
// ---------------- UDU 梯形(有平台) ----------------
{
const double A = amax;
if (A > EPSILON && A >= a0s - 1e-10) {
const double base = (2.0 * A * A - a0s * a0s) / (2.0 * j);
const double t1 = (A - a0s) / j;
const double t2 = (dv - base) / A;
const double t3 = A / j;
try_candidate(t1, t2, t3, +j, 0.0, -j);
}
}
// ---------------- DUD 三角形(无平台) ----------------
{
// Δv = (a0^2 - 2B^2)/(2j)
const double B2 = 0.5 * (a0s * a0s - 2.0 * j * dv);
if (B2 >= -1e-10) {
const double B = std::sqrt(std::max(0.0, B2));
if (B <= amax + 1e-10 && B >= -a0s - 1e-10) {
const double t1 = (a0s + B) / j;
const double t2 = 0.0;
const double t3 = B / j;
try_candidate(t1, t2, t3, -j, 0.0, +j);
}
}
}
// ---------------- DUD 梯形(有平台) ----------------
{
const double B = amax;
if (B > EPSILON && B >= -a0s - 1e-10) {
const double base = (a0s * a0s - 2.0 * B * B) / (2.0 * j);
const double t1 = (a0s + B) / j;
const double t2 = (base - dv) / B;
const double t3 = B / j;
try_candidate(t1, t2, t3, -j, 0.0, +j);
}
}
// 已到终点附近
if (!best.valid &&
std::abs(vf - v0) <= VELOCITY_THRESHOLD &&
std::abs(a0) <= ACCELERATION_THRESHOLD) {
best.valid = false;
best.total_time = 0.0;
best.v0 = v0;
best.a0 = a0;
best.vf = vf;
}
return best;
}
void SCurveVelocityPlanner1D::generateTrajectory(const SCurveVelocityProfile& profile, double dt,
std::vector<double>& velocities,
std::vector<double>& accelerations,
std::vector<double>& jerks) const
{
velocities.clear();
accelerations.clear();
jerks.clear();
if (!profile.valid || profile.total_time <= 0.0 || dt <= 0.0) {
velocities.push_back(profile.v0);
accelerations.push_back(profile.a0);
jerks.push_back(0.0);
return;
}
const int num_points = static_cast<int>(std::ceil(profile.total_time / dt)) + 1;
velocities.reserve(num_points);
accelerations.reserve(num_points);
jerks.reserve(num_points);
for (double t = 0.0; t <= profile.total_time; t += dt) {
velocities.push_back(getVelocityAtTime(profile, t));
accelerations.push_back(getAccelerationAtTime(profile, t));
jerks.push_back(getJerkAtTime(profile, t));
}
if (velocities.empty() || std::abs(velocities.back() - profile.vf) > VELOCITY_THRESHOLD) {
velocities.push_back(profile.vf);
accelerations.push_back(0.0);
jerks.push_back(0.0);
}
}
double SCurveVelocityPlanner1D::update(double dt)
{
if (dt <= 0.0) {
return state_.velocity;
}
if (!state_.has_active_profile || !active_profile_.valid) {
state_.jerk = 0.0;
updateIsMovingFlag();
return state_.velocity;
}
state_.elapsed_time += dt;
if (state_.elapsed_time >= active_profile_.total_time) {
state_.elapsed_time = active_profile_.total_time;
state_.velocity = active_profile_.vf;
state_.acceleration = 0.0;
state_.jerk = 0.0;
state_.has_active_profile = false;
updateIsMovingFlag();
return state_.velocity;
}
state_.velocity = getVelocityAtTime(active_profile_, state_.elapsed_time);
state_.acceleration = getAccelerationAtTime(active_profile_, state_.elapsed_time);
state_.jerk = getJerkAtTime(active_profile_, state_.elapsed_time);
updateIsMovingFlag();
return state_.velocity;
}
void SCurveVelocityPlanner1D::updateIsMovingFlag()
{
state_.is_moving =
state_.has_active_profile ||
std::abs(state_.velocity) > VELOCITY_THRESHOLD ||
std::abs(state_.target_velocity) > VELOCITY_THRESHOLD ||
std::abs(state_.acceleration) > ACCELERATION_THRESHOLD;
}
} // namespace cmvr

View File

@ -1,169 +1,547 @@
t,q1,q2,q3,q4,q5,q6,q7 t,q1,q2,q3,q4,q5,q6,q7
0,0.25,1,1.5707963267949,1.5707963267949,-1.5707963267949,0,0 0,0.25,1,1.5707963267949,1.5707963267949,-1.5707963267949,0,0
0.002,0.25,1,1.5707963267949,1.5707963267949,-1.5707963267949,0,0 0.002,0.25,1,1.5707963267949,1.5707963267949,-1.5707963267949,0,0
0.004,0.250001842320363,1.00000035621738,1.57079547429742,1.57079444210524,-1.57079668301227,3.34430494936117e-07,1.42912469251269e-07 0.004,0.25000047042195,0.999999643059012,1.57079655522309,1.57079724068573,-1.57079596985391,-1.30973721143836e-06,4.82598248142038e-07
0.006,0.250009211599068,1.00000178109261,1.57079206431392,1.57078690333631,-1.57079810788309,1.67216263610067e-06,7.14561905387093e-07 0.006,0.250002352119835,0.999998215295479,1.57079746893306,1.57080089623876,-1.57079454209152,-6.54868491622439e-06,2.41299125801426e-06
0.008,0.250025792451452,1.0000049871135,1.57078439190875,1.57076994101371,-1.57080131385445,4.68215140661819e-06,2.00076916853545e-06 0.008,0.250006586030861,0.999995002831306,1.57079952475507,1.57080912114056,-1.57079132964004,-1.83363069831887e-05,6.75637568596772e-06
0.01,0.25005526942355,1.00001068691258,1.57077075230822,1.57073978540339,-1.57080701340708,1.00336083670537e-05,4.28734398236013e-06 0.01,0.250014113346931,0.999989291798997,1.57080317944813,1.57082374281808,-1.57078561867083,-3.92920384698955e-05,1.44779486252094e-05
0.012,0.250101326918013,1.00001959342197,1.57074944107367,1.5706926662341,-1.57081591909138,1.83962760218046e-05,7.8600730098651e-06 0.012,0.25002587578704,0.999980368352981,1.57080888962368,1.57084658816104,-1.570776695436,-7.20352548050359e-05,2.65429080714911e-05
0.014,0.250167649092643,1.00003242008538,1.57071875433882,1.57062481231678,-1.57082874357675,3.04408038203672e-05,1.3004703478399e-05 0.014,0.250042815970618,0.999967518685138,1.57081711164106,1.57087948314138,-1.57076384632562,-0.000119185229528684,4.39164535541204e-05
0.016,0.250257919731615,1.00004988112752,1.57067698911111,1.57053245106106,-1.57084619971424,4.68392258226527e-05,2.00069223188819e-05 0.016,0.250065877891993,0.999950029044509,1.57082830147452,1.57092425232965,-1.5707463579404,-0.000183361080548634,6.75637869166764e-05
0.018,0.250375822089508,1.00007269188062,1.57062244363736,1.57041180788839,-1.57086900061264,6.8265540079134e-05,2.91523307867103e-05 0.018,0.250096007496088,0.999927185761162,1.57084291455164,1.57098271830821,-1.5707235171799,-0.000267181704862094,9.84501132239856e-05
0.02,0.25052503870832,1.00010156916829,1.57055341783365,1.57025910554178,-1.57089785972805,9.53963898036617e-05,4.07264145527739e-05 0.02,0.250134153355467,0.999898275274187,1.570861405563,1.57105670098111,-1.57069461134612,-0.000373265701722758,0.000137540641784734
0.022,0.250709251207703,1.00013723174661,1.57046821377978,1.57007056329152,-1.57093349096721,0.000128911846446335,5.50145092939761e-05 0.022,0.250181267448461,0.999862584163762,1.57088422824305,1.57114801678116,-1.57065892826264,-0.00050423128435177,0.00018580058735287
0.024,0.25093214004874,1.00018040080262,1.57036513627856,1.56984239603644,-1.5709766088048,0.000169496294800861,7.23017618654089e-05 0.024,0.250238306037392,0.999819399187298,1.57091183512237,1.57125847777549,-1.57061575640899,-0.000662696180567743,0.000244195171776534
0.026,0.251197384271681,1.00023180051036,1.57024249348038,1.56957081330007,-1.57102792841521,0.000217839420297711,9.28730871779383e-05 0.026,0.250306230644415,0.999768007319777,1.57094467725243,1.5713898906728,-1.57056438507031,-0.000851277523241454,0.000313689626812957
0.028,0.251508661208166,1.00029215864445,1.57009859757347,1.56925201812088,-1.57108816581923,0.000274637298630594,0.000117013120891842 0.028,0.250386009127344,0.999707695798416,1.57098320390151,1.57154405572967,-1.5705041045026,-0.0010725917297323,0.000395249197883043
0.03,0.251869646168614,1.00036220725132,1.56993176554023,1.56888220583562,-1.57115803804603,0.000340593587825559,0.000145006167898724 0.03,0.250478616872607,0.999637752170651,1.57102786221273,1.57172276553403,-1.57043420611487,-0.00132925436411946,0.000489839144531641
0.032,0.252284012105614,1.00044268337735,1.56974031997957,1.56845756275503,-1.5712382633105,0.000416420822772189,0.000177136146195836 0.032,0.250585038074371,0.999557464346465,1.57107909683867,1.57192780370559,-1.57035398266535,-0.00162387999348339,0.000598424744928135
0.034,0.252755429254375,1.00053432985264,1.56952258999442,1.56797426473065,-1.57132956120555,0.000502841812073582,0.000213686525014057 0.034,0.250706267118671,0.999466120654551,1.57113734954332,1.57216094348961,-1.57026272847384,-0.00195908203141728,0.00072197130036424
0.036,0.253287564751547,1.00063789612751,1.56927691214216,1.56742847561208,-1.57143265290722,0.000600591136810968,0.000254940254750321 0.036,0.250843310069524,0.999363009902274,1.57120305877169,1.57242394624786,-1.5701597396497,-0.00233747256989253,0.000861444140564823
0.038,0.253884082234046,1.00075413915643,1.56900163144327,1.56681634559378,-1.571548261389,0.000710416750429909,0.000301179684129656 0.038,0.25099718625673,0.999247421439378,1.57127665918684,1.57271855984787,-1.57004431433571,-0.00276166219960709,0.0010178086300883
0.04,0.254548641419916,1.00088382432053,1.56869510244007,1.56613400945109,-1.57167711163798,0.000833081678402873,0.000352686456771557 0.04,0.251168929965533,0.999118645225347,1.57135858117314,1.57304651695034,-1.56991575296774,-0.00323425981877845,0.0011920301760154
0.042,0.255284897673769,1.00102772637452,1.56835569029184,1.56537758466548,-1.57181993086087,0.00096936581556545,0.000409741374578847 0.042,0.251359592228325,0.998975971900352,1.57144925030474,1.57340953319513,-1.5697733585504,-0.00375787243033101,0.00138507423714958
0.044,0.256096501559966,1.00118663039675,1.56798177188531,1.56454316943985,-1.57197744866114,0.00112006781800965,0.000472624208638559 0.044,0.251570242718595,0.998818692859658,1.5715490867781,1.57380930528595,-1.56961643694885,-0.00433510492741253,0.00159790633497738
0.046,0.25698709838616,1.00136133272898,1.56757173694767,1.5636268406016,-1.57215039717532,0.00128600708927412,0.000541613444858038 0.046,0.251801971747353,0.998646100331404,1.57165850480715,1.57424750897407,-1.56944429719675,-0.0049685598671558,0.00183149206666271
0.048,0.257960327706088,1.00155264235986,1.56712398963253,1.56262465129037,-1.57233951158172,0.00146802596391654,0.000616986357907511 0.048,0.252055499984317,0.998457778919316,1.57177772745776,1.57472505784035,-1.56925654240594,-0.00565976745880769,0.00208640259738799
0.05,0.25901982283555,1.00176138210273,1.56663694990973,1.56153262858032,-1.57254553040044,0.00166699193133438,0.000699018857582903 0.05,0.252330161960637,0.998254355835669,1.57190631321648,1.57524020644808,-1.56905381705993,-0.00640643167306516,0.00236179878779658
0.052,0.260169210372693,1.0019883896871,1.5661090548831,1.56034677099537,-1.57276919568873,0.00188379993879461,0.000787985203963878 0.052,0.252625171204899,0.998036551188815,1.57204376048817,1.57579097026807,-1.56883685873587,-0.00720591555188081,0.00265671598977199
0.054,0.261412109710082,1.00223451898233,1.5655387602637,1.55906304586521,-1.57301125333204,0.00211937482346646,0.000884157781179529 0.054,0.252939742373786,0.997805085101871,1.57218956708213,1.57637536373045,-1.56860640519761,-0.00805558200416776,0.00297018961259649
0.056,0.262752132550084,1.00250064125313,1.56492454189639,1.55767738653966,-1.57327245334267,0.0023746738510965,0.000987806843381478 0.056,0.253273089233422,0.997560677628197,1.57234323076536,1.57699140228548,-1.56836319408827,-0.00895279403244094,0.0033012551216505
0.058,0.264192882428002,1.00278764644405,1.56426489733812,1.55618568945554,-1.57355355016504,0.00265068936227716,0.00109920022985152 0.058,0.253624422740584,0.997304048671724,1.57250424979362,1.57763710435995,-1.56810796263798,-0.00989491494798889,0.00364894803594106
0.06,0.265737954247884,1.00309644448937,1.56355834748601,1.55458381105016,-1.57385530298695,0.00294845152742228,0.00121860304593726 0.06,0.253992949223688,0.997035917912167,1.57267212342084,1.5783104932092,-1.56784144738653,-0.0108793085746444,0.00401230392437078
0.062,0.267390933836477,1.00342796664498,1.56280343825317,1.55286756451418,-1.57417847605577,0.00326903121175137,0.00134627730627171 0.062,0.254377868663495,0.996757004735117,1.57284635238723,1.57900959866477,-1.56756438392099,-0.0119033394412278,0.00439035840069514
0.064,0.269155397521335,1.00378316683865,1.5619987422898,1.55103271637648,-1.57452383899889,0.00361354295180039,0.00148248153649196 0.064,0.25477837307352,0.996468028167002,1.5730264393861,1.57973245877761,-1.56727750662821,-0.0129643729627431,0.00478214711714979
0.066,0.271034911739794,1.00416302303465,1.5611428607472,1.54907498291238,-1.57489216714748,0.00398314804522704,0.00162747032942876 0.066,0.25519364498011,0.996169706814893,1.57321188950975,1.58047712135703,-1.56698154846202,-0.0140597756104065,0.00518670575676088
0.068,0.273033032686143,1.00456853860907,1.56023442508162,1.54699002636592,-1.57528424186254,0.0043790577559646,0.00178149385149385 0.068,0.25562285600223,0.995862758811123,1.57340221067413,1.58124164540536,-1.56667724072532,-0.0151869150705921,0.00560307002438021
0.07,0.275153306005132,1.00500074373146,1.5592720988951,1.54477345097585,-1.57570085086258,0.00480253663710795,0.00194479729474488 0.07,0.256065165530977,0.995547901762665,1.57359691402226,1.58202410244853,-1.56636531286683,-0.0163431603927744,0.00603027563651297
0.0720000000000001,0.277399266540752,1.00546069674887,1.55825457980963,1.5424207987938,-1.57614278855189,0.00525490597429168,0.00211762026986112 0.0720000000000001,0.256519719508883,0.995225852705231,1.57379551430601,1.58282257776265,-1.56604649229253,-0.0175258821265462,0.00646735831002896
0.0740000000000001,0.279774438150143,1.00594948556802,1.55718060137111,1.53992754528202,-1.5766108563487,0.00573754735275206,0.00230019613501494 0.0740000000000001,0.256985649309076,0.994897328062009,1.57399753024604,1.5836351714967,-1.56572150419184,-0.0187324524477844,0.00691335374986928
0.0760000000000001,0.282282333593441,1.00646822903136,1.55604893497889,1.53728909467663,-1.57710586301241,0.00625190635175666,0.00249275125537641 0.0760000000000001,0.257462070714391,0.994563043606989,1.57420248486925,1.58445999969163,-1.56539107137852,-0.0199602452740281,0.00736729763587812
0.0780000000000001,0.28492645451149,1.00701807828284,1.5548583918365,1.53450077510092,-1.57762862496925,0.00679949637064798,0.00269550418774032 0.0780000000000001,0.257948082996526,0.994223714432794,1.57440990582331,1.58529519519592,-1.56505591414624,-0.0212066363691233,0.00782822560890514
0.0800000000000001,0.287710291504475,1.00760021811934,1.55360782491869,1.53155783341149,-1.57817996663587,0.00738190259138794,0.00290866478451633 0.0800000000000001,0.258442768095387,0.993880054922939,1.57461932566765,1.58613890847775,-1.56471675013891,-0.0224690034371797,0.00829517325633661
0.0820000000000001,0.290636961340257,1.00821579201921,1.55229629365924,1.5284558144833,-1.57876064876227,0.0080007093413499,0.00313240550072555 0.0820000000000001,0.25894518989871,0.993532778728442,1.57483028214013,1.58698930833416,-1.56437429423587,-0.0237447262058671,0.00876717609722456
0.0840000000000001,0.293704335855572,1.00886487094147,1.55092524192205,1.52519573812858,-1.5793704003301,0.00865645872516008,0.00336648940686858 0.0840000000000001,0.259454393622146,0.993182598748703,1.57504231839865,1.58784458249719,-1.56402925845179,-0.0250311864990688,0.00924326956719108
0.0860000000000001,0.296908573121487,1.00954717080892,1.54949689362425,1.52178041113848,-1.58000861146009,0.00934935295292093,0.00361054168475044 0.0860000000000001,0.259969405289927,0.992830227116568,1.57525498323697,1.58870293813725,-1.56368235185161,-0.0263257682988902,0.00972248900329144
0.0880000000000001,0.300245837642274,1.01026240719637,1.54801347594706,1.51821261851234,-1.58067467243228,0.0100796063044685,0.00386418116996403 0.0880000000000001,0.260489231316283,0.9924763751875,1.57546783127372,1.58956260226394,-1.56333428048042,-0.0276258577970037,0.0102038696290235
0.0900000000000001,0.303712301919588,1.01101029304587,1.54647721672544,1.51449512663298,-1.58136797317742,0.0108474415190109,0.00412702031074811 0.0900000000000001,0.261012858187775,0.992121753532774,1.57568042311382,1.5904218220245,-1.56298574730837,-0.0289288434352961,0.010686446539673
0.0920000000000001,0.307304147961211,1.01179053649422,1.54489034191344,1.51063068636732,-1.58208790279819,0.0116530862970873,0.00439866516278821 0.0920000000000001,0.261539293116413,0.991767044398554,1.57589234193789,1.59127893145011,-1.56263742514831,-0.0302322171314552,0.0111692921788712
0.0940000000000001,0.311017568729452,1.01260283881528,1.54325507312735,1.50662203609744,-1.58283384912085,0.0124967699139056,0.00467871542248941 0.0940000000000001,0.26206826540447,0.991412432143538,1.57610347297143,1.59213348235848,-1.56228949602713,-0.0315352999553912,0.0116521558609447
0.0960000000000001,0.31484876952446,1.01344689247894,1.54157362526907,1.5024719046872,-1.583605198278,0.0133787199429329,0.00496676450076238 0.0960000000000001,0.262599775628729,0.991057916464163,1.57631381254385,1.59298547524946,-1.56194196032547,-0.0328380914940666,0.0121350381449214
0.0980000000000001,0.318793969297783,1.01432237932795,1.5398482042319,1.49818301438949,-1.58440133432277,0.0142991590884302,0.00526239963889535 0.0980000000000001,0.26313382436409,0.990703497061623,1.5765233569802,1.59383491061208,-1.5615948184307,-0.0341405913192268,0.0126179395848887
0.1,0.322849401891661,1.015228968873,1.53808100469095,1.4937580836989,-1.58522163887456,0.0152583021254375,0.00556520206763711 0.1,0.263670412183494,0.990349173641918,1.57673210260126,1.59468178892469,-1.56124807073686,-0.0354427989874131,0.0131008607300459
0.102,0.32701131719969,1.0161663167061,1.53627420798018,1.48919983015459,-1.58606549079628,0.0162563529455337,0.00587474721019104 0.102,0.26420953965784,0.989994945915897,1.57694004572354,1.59552611065498,-1.56090171764465,-0.0367447140399751,0.0135838021247549
0.104,0.331275982244604,1.01713406303155,1.53442998005796,1.48451097309827,-1.58693226590272,0.0172935017065123,0.00619060492941906 0.104,0.26475120735591,0.989640813599312,1.57714718265939,1.59636787626012,-1.56055575956143,-0.0380463360030837,0.0140667643085924
0.106,0.335639682169149,1.01813183131323,1.53255046956309,1.47969423639167,-1.58782133669963,0.0183699220839392,0.00651233981917903 0.106,0.26529541584429,0.989286776412861,1.57735350971706,1.59720708618682,-1.56021019690123,-0.0393476643877437,0.0145497478164011
0.108,0.340098721136147,1.01915922703648,1.53063780596284,1.47475235109838,-1.58873207215267,0.0194857686223861,0.00683951153936941 0.108,0.265842165687293,0.988932834082236,1.57755902320072,1.59804374087143,-1.55986503008467,-0.0406486986898065,0.0150327531783412
0.11,0.34464942313408,1.0202158365824,1.52869409779455,1.46968805813435,-1.58966383748541,0.0206411741839657,0.00717167519393315 0.11,0.266391457446878,0.988578986338176,1.57776371941057,1.59887784074,-1.55952025953902,-0.0419494383899835,0.0155157809199423
0.112,0.349288132684715,1.02130122621178,1.52672143100214,1.46450411089169,-1.59061599400533,0.0218362474916401,0.0075083817507786 0.112,0.26694329168258,0.988225232916509,1.57796759464288,1.59970938620838,-1.55917588569813,-0.0432498829538583,0.0159988315621542
0.114,0.354011215449523,1.02241494115569,1.5247218673686,1.45920327784012,-1.59158789895642,0.0230710707646193,0.00784917850230876 0.114,0.267497668951425,0.987871573558206,1.57817064519004,1.60053837768231,-1.55883190900246,-0.0445500318319001,0.0164819056213988
0.116,0.358815058731886,1.02355650480918,1.52269744304558,1.45378834511041,-1.59257890539705,0.0243456974430299,0.00819360956501266 0.116,0.268054589807858,0.987518008009427,1.57837286734064,1.60136481555748,-1.55848832989906,-0.0458498844594769,0.0169650036096216
0.118,0.363696071872331,1.02472541802433,1.52065016718065,1.44826211906423,-1.59358836210158,0.0256601499989021,0.008541216416363 0.118,0.268614054803667,0.987164536021568,1.57857425737952,1.60218870021964,-1.55814514884153,-0.0471494402568679,0.0174481260343425
0.12,0.368650686534288,1.02592115849861,1.51858202064295,1.44262742885442,-1.59461561348388,0.0270144178304039,0.00889153846708243 0.12,0.269176064487903,0.986811157351316,1.57877481158786,1.60301003204465,-1.55780236629004,-0.0484486986292776,0.017931273398708
0.122,0.373675356878174,1.0271431802541,1.51649495484737,1.43688712898005,-1.59565999954108,0.028408455236147,0.0092441136666864 0.122,0.26974061940681,0.986457871760693,1.57897452624321,1.60382881139859,-1.55745998271133,-0.0497476589668481,0.0184144462015419
0.124,0.378766559621848,1.02839091320318,1.5143908906776,1.43104410184024,-1.59672085581554,0.029842179466293,0.0095984791400826 0.124,0.270307720103742,0.986104679017106,1.57917339761955,1.60464503863785,-1.55711799857864,-0.0510463206446732,0.0188976449373969
0.126,0.383920793985801,1.02966376279578,1.51227171750777,1.42510126029066,-1.5977975133731,0.0313154688471123,0.00995417185290487 0.126,0.270877367119095,0.985751578893398,1.5793714219874,1.60545871410915,-1.55677641437178,-0.0523446830228112,0.019380870096606
0.128,0.389132439035416,1.0309605766285,1.51014016859368,1.41906403208699,-1.59888885015124,0.0328275393694689,0.0103105827840801 0.128,0.271449560990227,0.9853985711679,1.57956859561384,1.6062698381497,-1.55643523057704,-0.0536427454462986,0.0198641221653337
0.13,0.394393098808599,1.03227945999131,1.5080000631315,1.41294118320728,-1.59999314805991,0.0343767034910838,0.0106669203107345 0.13,0.272024302251384,0.985045655624473,1.57976491476258,1.60707841108723,-1.55609444768725,-0.0549405072451638,0.0203474016256274
0.132,0.399694836020666,1.033618566465,1.5058549654811,1.40674111753033,-1.60110876649478,0.0359612723489954,0.0110224379770385 0.132,0.272601591433626,0.984692832052567,1.57996037569404,1.60788443324009,-1.55575406620173,-0.0562379677344403,0.0208307089554687
0.134,0.405030176915752,1.03497610371369,1.50370818616009,1.40047186364808,-1.60223414483986,0.0375795633954864,0.011376435455188 0.134,0.273181429064756,0.984340100247267,1.5801549746654,1.6086879049173,-1.55541408662628,-0.0575351262141809,0.0213140446288245
0.136,0.410392110969218,1.03635033828429,1.50156278538738,1.39414106653408,-1.60336780395946,0.0392299073945067,0.0117282589581785 0.136,0.273763815669239,0.983987460009341,1.58034870793068,1.60948882641869,-1.5550745094732,-0.0588319819694711,0.0217974091156985
0.138,0.415774086150845,1.03773959945933,1.49942157876802,1.38775598354351,-1.60450834678907,0.0409106547468421,0.0120773011659201 0.138,0.274348751768133,0.983634911145294,1.58054157174079,1.61028719803492,-1.55473533526125,-0.0601285342704432,0.0222808028821822
0.14,0.421170000430154,1.03914228222015,1.49728714473416,1.38132348422386,-1.60565445813446,0.0426201811283066,0.0124230007266122 0.14,0.274936237879016,0.983282453467419,1.58073356234361,1.61108302004757,-1.55439656451566,-0.0614247823722904,0.0227642263905066
0.142,0.42657419016316,1.04055684938462,1.49516183338634,1.37485005343265,-1.60680490378529,0.0443568924387481,0.0127648413940003 0.142,0.275526274515908,0.982930086793845,1.58092467598404,1.61187629272925,-1.55405819776811,-0.0627207255152808,0.0232476800990929
0.144,0.43198141594933,1.04198183298805,1.49304777641304,1.36834179728575,-1.60795852904412,0.0461192290709096,0.0131023508586034 0.144,0.276118862189203,0.982577810948587,1.58111490890407,1.61266701634365,-1.55372023555674,-0.0640163629247713,0.0237311644626041
0.146,0.437386846492176,1.04341583497793,1.49094689780066,1.36180445149229,-1.60911425676545,0.0479056695173839,0.0134350993275664 0.146,0.276714001405596,0.982225625761601,1.58130425734287,1.61345519114562,-1.55338267842611,-0.0653116938112225,0.024214679931996
0.148,0.442786040939981,1.04485752729382,1.4888609250818,1.35524339166883,-1.61027108499168,0.0497147333412469,0.0137626979037592 0.148,0.277311692668004,0.981873531068833,1.58149271753681,1.61424081738124,-1.55304552692725,-0.0666067173702129,0.0246982269545687
0.15,0.448174930126541,1.04630565140208,1.48679140090333,1.34866364526346,-1.61142808426523,0.0515449835416281,0.0140847968103465 0.15,0.277911936475503,0.981521526712269,1.58168028571956,1.61502389528794,-1.55270878161758,-0.0679014327824531,0.0251818059740175
0.152,0.453549797077296,1.04775901735317,1.48473969472809,1.34206990475832,-1.61258439468812,0.0533950283496603,0.0144010835024751 0.152,0.278514733323249,0.981169612539986,1.58186695812217,1.61580442509453,-1.55237244306095,-0.0691958392138011,0.0256654174304842
0.154,0.458907257094704,1.04921650242608,1.48270701451423,1.33546654185659,-1.61373922279214,0.0552635224931243,0.0147112807031349 0.154,0.27912008370241,0.980817788406207,1.5820527309731,1.61658240702127,-1.55203651182763,-0.0704899358152766,0.0261490617606084
0.156,0.464244237688956,1.05067704942034,1.48069441824316,1.32885762239553,-1.61489183827549,0.0571491679698173,0.0150151443957416 0.156,0.279727988100092,0.98046605417135,1.58223760049831,1.61735784128,-1.55170098849429,-0.0717837217230759,0.0266327393975787
0.158,0.469557958576464,1.05213966465222,1.47870282519217,1.32224692176043,-1.61604157065429,0.0590507143704104,0.0153124618016734 0.158,0.280338446999268,0.980114409702077,1.58242156292131,1.61813072807417,-1.551365873644,-0.0730771960585872,0.0271164507711838
0.16,0.474845911929095,1.05360341570695,1.47673302686921,1.3156379406061,-1.61718780587073,0.0609669587914467,0.0156030493669124 0.16,0.280951460878711,0.979762854871352,1.58260461446327,1.61890106759892,-1.55103116786622,-0.0743703579284058,0.0276001963078635
0.162,0.480105843021937,1.05506742899422,1.47478569754699,1.30903392072057,-1.61832998289332,0.0628967453783252,0.0158867507781568 0.162,0.281567030212918,0.979411389558486,1.58278675134304,1.61966886004119,-1.5506968717568,-0.075663206424349,0.0280839764307602
0.164,0.485335731396195,1.05653088714955,1.47286140434986,1.30243786089249,-1.61946759033905,0.0648389645367334,0.0161634350252857 0.164,0.282185155472041,0.979060013649194,1.58296796977723,1.62043410557973,-1.55036298591798,-0.0769557406234719,0.02856779155977
0.166,0.490533772626531,1.05799302631962,1.47096061686153,1.29585253266698,-1.62060016314195,0.0667925518491565,0.0164329945239143 0.166,0.28280583712182,0.978708727035644,1.58314826598031,1.62119680438525,-1.55002951095837,-0.0782479595880829,0.0290516421115937
0.168,0.495698360758408,1.05945313336497,1.4690837162338,1.28928049589621,-1.62172727928815,0.0687564867308961,0.0166953433089443 0.168,0.283429075623506,0.978357529616511,1.58332763616464,1.62195695662045,-1.54969644749294,-0.0795398623657591,0.0295355284997882
0.17,0.50082807146055,1.06091054300935,1.46723100378656,1.2827241140101,-1.62284855663301,0.0707297908575757,0.016950415307515 0.17,0.284054871433801,0.978006421297028,1.58350607654057,1.62271456244007,-1.54936379614306,-0.0808314479893627,0.0300194511348173
0.172,0.505921645920092,1.06236463496105,1.4654027090981,1.27618556894938,-1.62396364981244,0.0727115263934614,0.0171981626975632 0.172,0.284683225004777,0.977655401989038,1.58368358331648,1.62346962199104,-1.54903155753642,-0.0821227154770566,0.0305034104241034
0.174,0.510977975493128,1.06381483102725,1.46359899759148,1.26966687571855,-1.62507224725731,0.0747007940471486,0.0174385543562951 0.174,0.285314136783819,0.977304471611047,1.58386015269888,1.62422213541247,-1.5486997323071,-0.0834136638323206,0.030987406772078
0.176,0.515996087110802,1.06526059223957,1.46181997762848,1.26316989652938,-1.62617406831665,0.0766967309783177,0.0176715744012447 0.176,0.285947607213544,0.976953630088275,1.58403578089245,1.62497210283579,-1.54836832109552,-0.0847042920439679,0.0314714405802334
0.178,0.520975129430561,1.06670141600493,1.46006570712712,1.25669635451767,-1.62726886049336,0.0786985085763708,0.0178972208252095 0.178,0.286583636731742,0.976602877352713,1.58421046410015,1.62571952438478,-1.54803732454846,-0.0859945990861612,0.0319555122471737
0.18,0.525914359713424,1.06813683329348,1.4583361997222,1.25024784702624,-1.62835639679346,0.0807053301288722,0.018115504225208 0.18,0.287222225771302,0.976252213343167,1.58438419852324,1.62646440017566,-1.54770674331902,-0.0872845839184297,0.0324396221686657
0.182,0.530813131400832,1.06956640587183,1.45663143049105,1.24382585845659,-1.62943647318829,0.0827164283948316,0.0183264466246588 0.182,0.287863374760144,0.97590163800532,1.5845569803614,1.62720673031715,-1.54737657806668,-0.0885742454856857,0.0329237707376901
0.184,0.535670882358609,1.07098972358797,1.45495134126864,1.23743177269962,-1.63050890618749,0.084731063095021,0.0185300803872241 0.184,0.288507084121155,0.975551151291778,1.58472880581277,1.62794651491056,-1.54704682945723,-0.0898635827182415,0.0334079583444932
0.186,0.540487123750597,1.07240640171113,1.45329584557758,1.2310668851637,-1.6315735305189,0.0867485183286836,0.0187264472201739 0.186,0.289153354272115,0.975200753162125,1.58489967107404,1.62868375404986,-1.54671749816281,-0.0911525945318267,0.033892185376637
0.188,0.54526142950029,1.07381607832826,1.45166483319964,1.22473241442463,-1.63263019691059,0.0887680999231974,0.0189155972646791 0.188,0.289802185625634,0.974850443582977,1.58506957234051,1.62941844782171,-1.54638858486189,-0.0924412798276051,0.0343764522190514
0.19,0.549993426295309,1.07521841179622,1.45005817441603,1.21842951352881,-1.63367876996873,0.0907891327204559,0.0190975882701343 0.19,0.290453578589085,0.974500222528032,1.58523850580615,1.6301505963056,-1.54606009023927,-0.0937296374921925,0.0348607592540846
0.192,0.55468278408642,1.07661307824739,1.44847572394389,1.21215928098644,-1.63471912614449,0.0928109578009326,0.0192724848494072 0.192,0.291107533564534,0.974150089978124,1.58540646766371,1.63088019957388,-1.54573201498608,-0.0950176663976742,0.0353451068615543
0.194,0.559329207029992,1.07799976914393,1.4469173245969,1.2059227714976,-1.63575115178179,0.0948329296435486,0.0194403578118137 0.194,0.291764050948672,0.973800045921278,1.58557345410477,1.6316072576918,-1.54540435979976,-0.0963053654016227,0.0358294954187993
0.196,0.563932424820101,1.0793781888748,1.44538281069794,1.19972100645986,-1.63677474123723,0.096854413216551,0.0196012835706063 0.196,0.292423131132757,0.973450090352759,1.5857394613198,1.63233177071767,-1.54507712538411,-0.0975927333471159,0.03631392530073
0.198,0.56849218435373,1.08074805238733,1.44387201127166,1.19355498431187,-1.63778979506226,0.0988747809915702,0.0197553436218292 0.198,0.293084774502535,0.973100223275128,1.58590448549825,1.63305373870282,-1.54475031244922,-0.0988797690627548,0.0367983968798798
0.2,0.573008241669545,1.08210908284378,1.4423847530452,1.18742569077398,-1.6387962182374,0.10089340986981,0.0199026240915238 0.2,0.293748981438185,0.972750444698293,1.58606852282864,1.63377316169178,-1.5444239217115,-0.100166471362683,0.0372829105264564
0.202,0.57748035409739,1.08346100929107,1.44092086328537,1.18133410905379,-1.63979391844655,0.102909678005867,0.0200432153484704 0.202,0.294415752314247,0.972400754639564,1.58623156949858,1.63449003972224,-1.54409795389372,-0.101452839046602,0.0377674666083925
0.204,0.581908272551671,1.08480356433026,1.43948017250095,1.17528123009259,-1.6407828043792,0.104922961510877,0.0201772116799003 0.204,0.295085087499557,0.972051153123704,1.5863936216949,1.63520437282521,-1.54377240972491,-0.102738870899796,0.038252065491397
0.206,0.586291733897091,1.08613648176994,1.43806251703955,1.16926806293759,-1.64176278404674,0.106932631012464,0.0203047110279236 0.206,0.295756987357185,0.971701640182982,1.5865546756037,1.63591616102504,-1.54344728994046,-0.104024565693144,0.0387367075390062
0.208,0.590630453309381,1.08745949424521,1.43666774160949,1.16329564533564,-1.64273376309773,0.108938048044185,0.0204258147847799 0.208,0.296431452244367,0.971352215857228,1.58671472741044,1.6366254043395,-1.54312259528206,-0.105309922183144,0.0392213931126348
0.21,0.594924116546526,1.08877233078131,1.43529570175815,1.15736505465657,-1.64369564311545,0.110938561231623,0.020540627645439 0.21,0.297108482512437,0.971002880193886,1.58687377329997,1.63733210277985,-1.54279832649772,-0.106594939111928,0.0397061225716272
0.212,0.59917237203715,1.09007471427752,1.43394626634078,1.15147741926967,-1.6446483198792,0.112933502235891,0.0206492575165592 0.212,0.297788078506771,0.970653633248063,1.58703180945667,1.63803625635091,-1.54247448434176,-0.107879615207285,0.0401908962733081
0.214,0.603374822681679,1.09136635888301,1.43261932001573,1.14563393051492,-1.6455916815681,0.114922181407675,0.0207518154813593 0.214,0.298470240566714,0.970304475082586,1.58718883206446,1.63873786505112,-1.54215106957482,-0.10916394918268,0.0406757145730338
0.216,0.607531017248159,1.09264696723191,1.43131476580591,1.13983585543318,-1.64652560688365,0.116903883095872,0.0208484158205918 0.216,0.299154969025521,0.969955405768056,1.58734483730694,1.63943692887261,-1.54182808296385,-0.110447939737272,0.0411605778242434
0.218,0.611640441227448,1.09391622749866,1.43003252777044,1.13408455044681,-1.64744996306321,0.118877860543898,0.0209391760905339 0.218,0.29984226421029,0.969606425382896,1.58749982136741,1.64013344780127,-1.54150552528214,-0.111731585555937,0.0416454863785097
0.22,0.615702506990877,1.09517381022828,1.42877255383642,1.12838147621652,-1.64836460375254,0.120843330293354,0.0210242172597587 0.22,0.3005321264419,0.969257534013409,1.58765378042898,1.64082742181683,-1.54118339730925,-0.113014885309286,0.04213044058559
0.222,0.619716543066404,1.0964193648871,1.42753481884801,1.12272821394221,-1.64926936669954,0.122799465998217,0.0211036639074507 0.222,0.301224556034948,0.968908731753829,1.58780671067464,1.6415188508929,-1.54086169983111,-0.114297837653685,0.0426154407934776
0.224,0.623681782314903,1.09765251606879,1.42631932789977,1.117126483429,-1.65016407122443,0.124745391532273,0.0211776444872216 0.224,0.301919553297684,0.968560018706372,1.58795860828732,1.64220773499704,-1.54054043363992,-0.115580441231278,0.0431004873484523
0.226,0.627597348744652,1.09887285927698,1.42512612003332,1.11157816330648,-1.65104851541256,0.126680173246775,0.0212462916618221 0.226,0.302617118531949,0.968211394981292,1.58810946944998,1.64289407409085,-1.54021959953422,-0.116862694670006,0.0435855805951317
0.228,0.631462242646331,1.10007995618832,1.42395527239265,1.10608531387447,-1.65192247296484,0.12860281120284,0.0213097427159108 0.228,0.303317252033112,0.967862860696935,1.58825929034571,1.64357786813002,-1.53989919831888,-0.118144596583632,0.0440707208765224
0.23,0.635275323659058,1.1012733292778,1.42280690495391,1.10065020315785,-1.65278568962571,0.130512229161623,0.0213681400562343 0.23,0.304019954090006,0.967514415979785,1.58840806715775,1.6442591170644,-1.53957923080508,-0.119426145571755,0.0445559085340702
0.232,0.63903529128488,1.10245245565926,1.42168118597271,1.09527533689436,-1.65363787909004,0.132407263061863,0.0214216318113319 0.232,0.304725224984871,0.967166060964527,1.58855579606963,1.64493782083805,-1.53925969781032,-0.120707340219838,0.0450411439077118
0.234,0.642736496313849,1.10361545093439,1.42057957825489,1.08996946544768,-1.6544777729133,0.134284534660412,0.0214703177474029 0.234,0.305433064993284,0.96681779579409,1.5887024732652,1.64561397938933,-1.53894060015842,-0.121988179099229,0.0455264273359255
0.236,0.646372093974725,1.10476004924951,1.41950386936223,1.08474313656344,-1.65530383140351,0.136139993161554,0.0215143104730273 0.236,0.306143474384104,0.966469620619707,1.58884809492874,1.64628759265094,-1.53862193867954,-0.123268660767179,0.0460117591557821
0.238,0.64993532926834,1.10588400622119,1.41845578486969,1.07960686203962,-1.65611453450217,0.137969559783451,0.0215537551641745 0.238,0.306856453419405,0.966121535600963,1.58899265724502,1.64695866055001,-1.53830371421017,-0.124548783766869,0.0464971397029957
0.24,0.653419530807091,1.10698509841652,1.41743699292,1.07457111972711,-1.65690838059529,0.139769129987341,0.021588827953406 0.24,0.30757200235442,0.965773540905851,1.58913615639938,1.64762718300816,-1.53798592759311,-0.12582854662743,0.0469825693119748
0.242,0.65681810545678,1.10806112300992,1.41644910860526,1.06964635415541,-1.65768388547656,0.141534576296102,0.0216197341763527 0.242,0.308290121437475,0.965425636710822,1.58927858857782,1.64829315994152,-1.53766857967752,-0.127107947863965,0.047468048315873
0.244,0.66012453378391,1.10910989761547,1.41549369817407,1.06484297577424,-1.65843958146359,0.143261751708139,0.0216467064714335 0.244,0.309010810909931,0.965077823200839,1.58941994996707,1.64895659126086,-1.53735167131887,-0.128386985977575,0.0479535770466399
0.246,0.663332366311344,1.11012926029438,1.41457228306306,1.06017135880129,-1.65917401666846,0.144946493713076,0.0216700027291523 0.246,0.309734071006122,0.96473010056943,1.58956023675469,1.64961747687163,-1.53703520337899,-0.129665659455379,0.0484391558350722
0.248,0.666435220584072,1.11111706973783,1.41368634375261,1.05564183766743,-1.65988575442362,0.146584628915491,0.021689903887829 0.248,0.310459901953295,0.964382469018738,1.58969944512909,1.65027581667399,-1.53671917672604,-0.130943966770539,0.048924785010864
0.25,0.669426779044936,1.1120712056256,1.41283732344721,1.05126470205371,-1.6605733728641,0.148171978271759,0.0217067115733034 0.25,0.31118830397155,0.964034928759578,1.58983757127968,1.65093161056293,-1.53640359223453,-0.132221906382283,0.0494104649026581
0.252,0.67230080954945,1.11298957599929,1.41202662518981,1.04705015855001,-1.66123546948518,0.14970437454984,0.0217207455592956 0.252,0.311919277273779,0.963687480011482,1.58997461139693,1.65158485842826,-1.53608845078532,-0.13349947673593,0.0498961958380963
0.254,0.675054918669169,1.11387129484519,1.41125452047699,1.04300281446194,-1.66187148961923,0.151179673697358,0.0217323335474792 0.254,0.312652822065607,0.963340123002759,1.59011056167242,1.65223556015477,-1.53577375326561,-0.134776676262912,0.0503819781438705
0.256,0.677689677898528,1.11471641371178,1.41052042673693,1.03912289958477,-1.66248153408414,0.152597336038527,0.0217417933709644 0.256,0.313388938545334,0.962992857970542,1.59024541829896,1.65288371562221,-1.53545950056896,-0.1360535033808,0.0508678121457733
0.258,0.680205902287652,1.11552507078587,1.40982371167993,1.03541023116908,-1.66306575878394,0.153956995337513,0.021749428991169 0.258,0.31412762690387,0.962645685160841,1.59037917747063,1.65352932470537,-1.53514569359531,-0.137329956493328,0.0513536981687488
0.26,0.682604636308303,1.11629748610458,1.409163698156,1.03186423250805,-1.66362437149318,0.155258452986939,0.0217555293641079 0.26,0.314868887324684,0.962298604828597,1.59051183538291,1.65417238727418,-1.53483233325094,-0.13860603399042,0.051839636536943
0.262,0.6848871405047,1.11703395696748,1.40853966853826,1.02848395102939,-1.66415762881832,0.156501672096117,0.021760367528145 0.262,0.315612719983738,0.961951617237731,1.59064338823272,1.65481290319372,-1.53451942044849,-0.139881734248211,0.0523256275737547
0.264,0.687054878865238,1.11773485354077,1.40795086867556,1.02526807592404,-1.66466583332293,0.157686771493156,0.0217641998988518 0.264,0.316359125049433,0.961604722661196,1.59077383221852,1.65545087232433,-1.534206956107,-0.141157055629075,0.0528116716018859
0.266,0.689109506857087,1.11840061464581,1.40739651145443,1.02221495533837,-1.66514933080505,0.158814019655678,0.0217672657566141 0.266,0.317108102682548,0.961257921381031,1.59090316354039,1.65608629452163,-1.53389494115187,-0.142431996481649,0.0532977689433926
0.268,0.69105286007145,1.11903174372432,1.40687578000731,1.01932261315163,-1.66560850771546,0.159883828585304,0.0217697869126982 0.268,0.317859653036183,0.960911213688412,1.59103137840012,1.6567191696366,-1.53358337651488,-0.143706555140862,0.0537839199197351
0.27,0.692886943432767,1.11962880497315,1.40638783060117,1.01658876535531,-1.66604378870713,0.160896747641634,0.0217719675396166 0.27,0.3186137762557,0.9605645998837,1.59115847300127,1.65734949751566,-1.53327226313419,-0.144980729927958,0.0542701248518287
0.272,0.694613920930365,1.12019241964189,1.40593179523737,1.01401083604683,-1.66645563430673,0.161853457351795,0.0217739941518242 0.272,0.319370472478667,0.960218080276496,1.59128444354927,1.65797727800068,-1.53296160195437,-0.146254519150522,0.0547563840600941
0.274,0.696236105835983,1.12072326248695,1.40550678399123,1.01158597304523,-1.66684453870013,0.162754763212052,0.0217760357230159 0.274,0.320129741834796,0.95987165518569,1.5914092862515,1.6586025109291,-1.53265139392637,-0.147527921102509,0.0552426978645079
0.276,0.697755951375101,1.12122205837642,1.40511188711695,1.00931106313328,-1.66721102762474,0.163601589498198,0.0217782439265824 0.276,0.320891584445894,0.959525324939513,1.59153299731737,1.65922519613393,-1.53234164000754,-0.14880093406427,0.0557290665846529
0.278,0.699176041824194,1.1216895790402,1.40474617694125,1.00718274692639,-1.66755565636225,0.164394973101665,0.0217807534861179 0.278,0.321656000425796,0.959179089875588,1.59165557295841,1.65984533344388,-1.53203234116164,-0.150073556302579,0.0562154905397685
0.28,0.700499084009816,1.12212663996054,1.40440870956698,1.00519743336615,-1.66787900782608,0.165136057408306,0.0217836826232383 0.28,0.322422989880316,0.958832950340979,1.59177700938833,1.66046292268334,-1.53172349835885,-0.151345786070659,0.0567019700488009
0.282,0.701727899188819,1.12253409739859,1.40409852640559,1.0033513138334,-1.66818169073876,0.165826086236788,0.0217871335903862 0.282,0.323192552907185,0.958486906692245,1.59189730282316,1.66107796367251,-1.53141511257575,-0.15261762160821,0.0571885054304539
0.284,0.702865415292041,1.12291284555272,1.40381465555585,1.00164037587392,-1.66846433789473,0.166466397853349,0.0217911932767349 0.284,0.323964689595999,0.958140959295485,1.59201644948126,1.66169045622742,-1.53110718479536,-0.153889061141441,0.0576750970032382
0.286,0.703914659516474,1.12326381384506,1.40355611304421,1.00006041652778,-1.66872760450488,0.167058419079344,0.0217959338757838 0.286,0.324739400028158,0.957795108526396,1.59213444558344,1.66230040016,-1.53079971600712,-0.155160102883092,0.0581617450855226
0.288,0.704878751253193,1.12358796433277,1.40332190394086,0.998607055252488,-1.66897216661964,0.167603659507635,0.0218014136037348 0.288,0.325516684276815,0.957449354770314,1.59225128735308,1.66290779527813,-1.5304927072069,-0.156430745032465,0.0586484499955835
0.29,0.705760915577555,1.12388618284817,1.40311081459325,0.997275755681831,-1.66919854164349,0.168103687680765,0.0218075720469102 0.29,0.326296542406816,0.957103698422271,1.59236697101614,1.66351264138571,-1.53018615939702,-0.157700985775455,0.059135212051655
0.292,0.706564561572463,1.12415883183593,1.40292053773514,0.996061876400101,-1.66940634032113,0.168560049436762,0.0218137901125297 0.292,0.327078974474646,0.956758139887043,1.5924814928013,1.66411493828273,-1.52988007358625,-0.158970823284575,0.0596220315719796
0.294,0.707293148791385,1.12440641878883,1.40274898596643,0.99496062434672,-1.66959538456491,0.168974376736195,0.0218195552112768 0.294,0.327863980528374,0.956412679579197,1.59259484894003,1.66471468576528,-1.5295744507898,-0.160240255718988,0.0601089088748571
0.296,0.707950166012334,1.12462967417806,1.4025944533599,0.99396705898098,-1.66976584321932,0.169348396413619,0.0218245415369336 0.296,0.328651560607598,0.956067317923144,1.59270703566668,1.66531188362568,-1.52926929202935,-0.161509281224534,0.0605958442786957
0.298,0.708539132867538,1.12482951105172,1.40245554382415,0.993076106285733,-1.66991816912845,0.169683918845492,0.021828572963982 0.298,0.329441714743389,0.955722055353186,1.59281804921854,1.66590653165247,-1.52896459833304,-0.162777897933763,0.061082838102061
0.3,0.709063601048548,1.12500698884725,1.40233110622867,0.992282571967934,-1.67005304212536,0.169982827411263,0.0218315899641012 0.3,0.330234442958236,0.955376892313565,1.59292788583597,1.6664986296305,-1.52866037073551,-0.164046103965962,0.0615698906637263
0.302,0.709527155063088,1.12516328141069,1.40222017658937,0.99158115384138,-1.67017131818006,0.170247068779264,0.0218336205413285 0.302,0.331029745265994,0.955031829258514,1.59303654176244,1.66708817734099,-1.52835661027784,-0.165313897427187,0.0620570022827223
0.304,0.709933412552451,1.12529964907496,1.40212192729088,0.990966453390331,-1.67027398467105,0.170478644022542,0.0218347550442238 0.304,0.331827621671827,0.954686866652304,1.59314401324465,1.66767517456159,-1.52805331800762,-0.166581276410293,0.0625441732783867
0.306,0.710286024196073,1.12541741457677,1.4020356231342,0.990432986520877,-1.67036212158804,0.170679600553607,0.0218351246401672 0.306,0.332628072172154,0.954342004969292,1.5932502965326,1.6682596210664,-1.52775049497894,-0.167848238994966,0.063031403970414
0.308,0.710588673238204,1.12551794256296,1.4019605839001,0.989975193511789,-1.67043686839195,0.170852024857835,0.0218348832072312 0.308,0.333431096754597,0.953997244693971,1.59335538787968,1.66884151662608,-1.52744814225239,-0.16911478324775,0.0635186946789048
0.31,0.710845074674242,1.12560262243324,1.40189615307419,0.989587448179387,-1.67049939622162,0.170998036000298,0.0218341923946644 0.31,0.334236695397927,0.953652586321016,1.59345928354276,1.66942086100786,-1.52714626089506,-0.170380907222085,0.0640060457244159
0.312,0.711058974134028,1.12567285427472,1.40184167236362,0.989264066272617,-1.67055088512486,0.171119779878176,0.0218332096110777 0.312,0.335044868072007,0.953308030355334,1.59356197978227,1.66999765397563,-1.52684485198055,-0.171646608958332,0.0644934574280089
0.314,0.711234146497942,1.12573003765657,1.40179646163219,0.988999313115664,-1.67059250598918,0.171219424189395,0.0218320787114413 0.314,0.335855614737744,0.95296357731211,1.5936634728623,1.67057189528999,-1.52654391658902,-0.172911886483809,0.0649809301113006
0.316,0.711374394280274,1.12577556306379,1.40175980387856,0.988787410516486,-1.67062540684716,0.171299154086923,0.0218309231648644 0.316,0.336668935347032,0.952619227716857,1.59376375905067,1.67114358470826,-1.52624345580712,-0.174176737812823,0.0654684640965115
0.318,0.711483545813478,1.12581080575691,1.40173093487695,0.988622542960711,-1.67065070322715,0.171361168486807,0.0218298414922057 0.318,0.337484829842701,0.952274982105459,1.59386283461903,1.67171272198463,-1.52594347072807,-0.175441160946701,0.0659560597065153
0.32,0.711565453266935,1.12583712184677,1.4017090370887,0.988498863111629,-1.67066947221106,0.171407676996329,0.0218289047650134 0.32,0.338303298158464,0.951930841024221,1.59396069584294,1.6722793068701,-1.52564396245162,-0.176705153873823,0.0664437172648883
0.322,0.71162399053454,1.12585584637196,1.40169323743674,0.988410496638348,-1.67068274984787,0.171440897426766,0.021828155955454 0.322,0.339124340218865,0.951586805029915,1.59405733900198,1.67284333911265,-1.52534493208409,-0.177968714569655,0.0669314370959582
0.324,0.711663051026769,1.12586829316129,1.40168260851534,0.988351546395683,-1.67069153155464,0.171463053853064,0.0218276109217672 0.324,0.339947955939224,0.951242874689827,1.5941527603798,1.67340481845719,-1.52504638073836,-0.179231840996784,0.0674192195248532
0.326,0.711686545404481,1.12587575625676,1.40167617278701,0.988316095980698,-1.67069677511968,0.171476375180642,0.0218272608067261 0.326,0.34077414522559,0.950899050581803,1.59424695626424,1.6739637446457,-1.52474830953388,-0.18049453110495,0.0679070648775512
0.328,0.711698399293412,1.12587951266435,1.40167290929865,0.988298212692149,-1.67069940590607,0.171483094177588,0.021827075618881 0.328,0.341602907974683,0.950555333294294,1.59433992294741,1.67452011741722,-1.52445071959667,-0.18175678283108,0.0683949734809281
0.33,0.711702551019825,1.12588082619303,1.40167176243318,0.988291949920128,-1.67070032384003,0.171485446928849,0.0218270087591687 0.33,0.342434244073849,0.950211723426402,1.59443165672576,1.67507393650796,-1.52415361205937,-0.183018594099322,0.0688829456628071
0.332,0.711702949409042,1.12588095213593,1.40167165220097,0.988291348994029,-1.67070041175885,0.171485672667813,0.0218270022495337 0.332,0.343268153401002,0.949868221587929,1.59452215390022,1.6756252016513,-1.52385698806118,-0.184279962821081,0.069370981752007
0.334,0.711702949409042,1.12588095213593,1.40167165220097,0.988291348994029,-1.67070041175885,0.171485672667813,0.0218270022495337 0.334,0.344104635824578,0.949524828399416,1.59461141077621,1.67617391257789,-1.52356084874794,-0.18554088689505,0.0698590820783912
0.336,0.344943691203482,0.949181544492193,1.59469942366383,1.67672006901567,-1.52326519527207,-0.186801364207251,0.0703472469729158
0.338,0.345785319387035,0.948838370508422,1.59478618887784,1.67726367068995,-1.52297002879264,-0.188061392631064,0.0708354767676782
0.34,0.346629520214928,0.948495307101141,1.59487170273784,1.67780471732343,-1.52267535047535,-0.189320970027268,0.0713237717959655
0.342,0.347476293517167,0.948152354934307,1.59495596156831,1.6783432086363,-1.52238116149254,-0.190580094244071,0.0718121323923024
0.344,0.348325639114026,0.947809514682845,1.59503896169872,1.67887914434624,-1.52208746302317,-0.191838763117154,0.0723005588924998
0.346,0.349177556815994,0.947466787032685,1.59512069946362,1.67941252416852,-1.52179425625291,-0.193096974469698,0.0727890516337023
0.348,0.350032046423729,0.947124172680809,1.59520117120271,1.67994334781601,-1.52150154237405,-0.194354726112429,0.0732776109544367
0.35,0.350889107728003,0.946781672335295,1.59528037326097,1.68047161499928,-1.5212093225856,-0.19561201584365,0.0737662371946591
0.352,0.351748740509659,0.946439286715355,1.5953583019887,1.68099732542658,-1.52091759809321,-0.19686884144928,0.0742549306958032
0.354,0.352610944539556,0.946097016551382,1.59543495374166,1.68152047880399,-1.52062637010927,-0.198125200702894,0.0747436918008276
0.356,0.353475719578523,0.94575486258499,1.59551032488114,1.68204107483538,-1.52033563985285,-0.199381091365754,0.0752325208542634
0.358,0.354343065377309,0.945412825569056,1.59558441177404,1.68255911322251,-1.52004540854973,-0.200636511186854,0.0757214182022613
0.36,0.355212981676535,0.945070906267762,1.59565721079299,1.68307459366507,-1.51975567743242,-0.201891457902957,0.0762103841926393
0.362,0.356085468206646,0.944729105456634,1.5957287183164,1.68358751586073,-1.51946644774018,-0.203145929238629,0.0766994191749294
0.364,0.356960524687859,0.944387423922587,1.59579893072861,1.6840978795052,-1.51917772071898,-0.204399922906287,0.0771885235004247
0.366,0.35783815083012,0.944045862463961,1.59586784441992,1.68460568429225,-1.51888949762157,-0.205653436606227,0.0776776975222266
0.368,0.358718346333053,0.943704421890561,1.59593545578674,1.6851109299138,-1.51860177970743,-0.206906468026673,0.0781669415952909
0.37,0.359601110885912,0.943363103023703,1.59600176123164,1.68561361605995,-1.51831456824285,-0.208159014843814,0.0786562560764751
0.372,0.360486444167536,0.943021906696245,1.59606675716345,1.68611374241903,-1.51802786450087,-0.209411074721842,0.0791456413245844
0.374,0.361374345846298,0.942680833752633,1.59613043999738,1.68661130867764,-1.51774166976134,-0.210662645312993,0.0796350977004183
0.376,0.36226481558006,0.942339885048933,1.59619280615507,1.68710631452072,-1.51745598531088,-0.211913724257591,0.0801246255668166
0.378,0.363157853016126,0.941999061452876,1.59625385206475,1.68759875963159,-1.51717081244295,-0.213164309184085,0.0806142252887057
0.38,0.364053457791195,0.941658363843892,1.59631357416123,1.688088643692,-1.51688615245782,-0.214414397709093,0.0811038972331446
0.382,0.364951629531313,0.941317793113149,1.59637196888611,1.68857596638216,-1.51660200666258,-0.215663987437443,0.08159364176937
0.384,0.365852367851828,0.940977350163588,1.59642903268779,1.68906072738083,-1.51631837637116,-0.216913075962212,0.082083459268843
0.386,0.366755672357344,0.940637035909964,1.5964847620216,1.68954292636532,-1.51603526290435,-0.218161660864773,0.0825733501052936
0.388,0.367661542641671,0.940296851278877,1.59653915334987,1.69002256301158,-1.5157526675898,-0.219409739714834,0.0830633146547665
0.39,0.368569978287785,0.939956797208814,1.59659220314207,1.69049963699421,-1.515470591762,-0.220657310070483,0.0835533532956665
0.392,0.369480978867779,0.939616874650179,1.59664390787484,1.69097414798655,-1.51518903676233,-0.221904369478227,0.0840434664088029
0.394,0.370394543942817,0.939277084565332,1.59669426403216,1.69144609566067,-1.51490800393909,-0.223150915473041,0.0845336543774348
0.396,0.371310673063087,0.938937427928622,1.59674326810536,1.6919154796875,-1.51462749464742,-0.224396945578406,0.0850239175873156
0.398,0.372229365767761,0.938597905726425,1.59679091659329,1.69238229973678,-1.51434751024941,-0.225642457306357,0.0855142564267376
0.4,0.373150621584946,0.938258518957171,1.59683720600238,1.69284655547717,-1.51406805211405,-0.226887448157526,0.0860046712865763
0.402,0.374074440031639,0.937919268631384,1.59688213284672,1.6933082465763,-1.51378912161725,-0.228131915621184,0.0864951625603347
0.404,0.375000820613682,0.937580155771713,1.59692569364819,1.69376737270078,-1.51351072014188,-0.229375857175288,0.086985730644187
0.406,0.375929762825722,0.937241181412965,1.59696788493653,1.69422393351626,-1.51323284907771,-0.230619270286527,0.0874763759370227
0.408,0.376861266151158,0.936902346602134,1.59700870324946,1.69467792868748,-1.51295550982152,-0.231862152410366,0.0879670988404902
0.41,0.377795330062107,0.936563652398441,1.59704814513274,1.69512935787833,-1.51267870377702,-0.233104500991088,0.0884578997590401
0.412,0.37873195401935,0.936225099873356,1.59708620714031,1.69557822075187,-1.51240243235489,-0.234346313461847,0.0889487790999687
0.414,0.379671137472297,0.935886690110636,1.59712288583434,1.69602451697037,-1.51212669697282,-0.235587587244708,0.0894397372734609
0.416,0.380612879858934,0.935548424206352,1.59715817778535,1.6964682461954,-1.51185149905546,-0.236828319750696,0.089930774692633
0.418,0.38155718060579,0.935210303268921,1.59719207957232,1.69690940808782,-1.5115768400345,-0.238068508379842,0.0904218917735756
0.42,0.382504039127882,0.934872328419132,1.59722458778275,1.69734800230787,-1.51130272134862,-0.239308150521231,0.090913088935396
0.422,0.383453454828683,0.934534500790182,1.5972556990128,1.69778402851517,-1.51102914444351,-0.240547243553046,0.0914043666002606
0.424,0.38440542710007,0.934196821527698,1.59728540986734,1.69821748636881,-1.51075611077192,-0.24178578484262,0.0918957251934366
0.426,0.385359955322286,0.933859291789768,1.59731371696009,1.69864837552736,-1.51048362179361,-0.243023771746481,0.0923871651433344
0.428,0.386317038863895,0.933521912746971,1.59734061691368,1.69907669564892,-1.51021167897542,-0.244261201610398,0.0928786868815489
0.43,0.387276677081741,0.933184685582401,1.59736610635976,1.69950244639119,-1.50994028379122,-0.245498071769434,0.0933702908429011
0.432,0.388238869320904,0.932847611491693,1.59739018193913,1.69992562741147,-1.50966943772197,-0.246734379547992,0.0938619774654791
0.434,0.389203614914658,0.932510691683054,1.59741284030178,1.70034623836673,-1.50939914225568,-0.247970122259861,0.0943537471906794
0.436,0.390170913184431,0.932173927377284,1.59743407810701,1.70076427891365,-1.50912939888748,-0.249205297208272,0.0948456004632477
0.438,0.391140763439758,0.931837319807807,1.59745389202356,1.70117974870866,-1.50886020911956,-0.25043990168594,0.0953375377313192
0.44,0.392113164978246,0.931500870220689,1.59747227872965,1.70159264740799,-1.50859157446123,-0.251673932975118,0.0958295594464589
0.442,0.393088117085527,0.931164579874666,1.59748923491312,1.70200297466769,-1.50832349642891,-0.252907388347646,0.0963216660637022
0.444,0.394065619035216,0.930828450041171,1.59750475727152,1.70241073014369,-1.50805597654615,-0.254140265064998,0.0968138580415941
0.446,0.395045670088874,0.930492482004351,1.59751884251218,1.70281591349184,-1.50778901634361,-0.25537256037834,0.0973061358422294
0.448,0.396028269495965,0.930156677061093,1.59753148735235,1.70321852436796,-1.50752261735909,-0.25660427152857,0.0977984999312916
0.45,0.397013416493813,0.929821036521048,1.59754268851926,1.70361856242784,-1.50725678113756,-0.257835395746379,0.0982909507780924
0.452,0.398001110307561,0.929485561706649,1.59755244275026,1.70401602732735,-1.5069915092311,-0.259065930252294,0.0987834888556103
0.454,0.398991350150136,0.929150253953137,1.59756074679286,1.70441091872241,-1.506726803199,-0.260295872256736,0.0992761146405295
0.456,0.399984135222199,0.928815114608577,1.59756759740488,1.70480323626908,-1.50646266460768,-0.261525218960066,0.099768828613278
0.458,0.400979464712113,0.928480145033881,1.59757299135453,1.70519297962359,-1.50619909503075,-0.262753967552641,0.100261631258066
0.46,0.401977337795896,0.928145346602827,1.59757692542049,1.70558014844233,-1.50593609604903,-0.263982115214864,0.100754523062923
0.462,0.402977753637188,0.927810720702078,1.59757939639205,1.70596474238199,-1.5056736692505,-0.265209659117237,0.101247504519738
0.464,0.403980711387202,0.927476268731201,1.59758040106917,1.70634676109951,-1.50541181623034,-0.266436596420413,0.101740576124292
0.466,0.404986210184694,0.927141992102685,1.59757993626258,1.70672620425215,-1.50515053859098,-0.267662924275251,0.1022337383763
0.468,0.405994249155913,0.926807892241959,1.5975779987939,1.70710307149753,-1.50488983794201,-0.268888639822866,0.102726991779444
0.47,0.40700482741457,0.926473970587407,1.59757458549574,1.7074773624937,-1.50462971590028,-0.270113740194684,0.103220336841414
0.472,0.408017944061793,0.926140228590386,1.59756969321177,1.7078490768991,-1.50437017408986,-0.271338222512494,0.103713774073937
0.474,0.409033598186093,0.925806667715241,1.59756331879685,1.70821821437268,-1.50411121414204,-0.272562083888507,0.104207303992821
0.476,0.410051788863317,0.925473289439324,1.59755545911709,1.7085847745739,-1.50385283769538,-0.273785321425403,0.104700927117986
0.478,0.411072515156616,0.925140095253,1.59754611105,1.70894875716276,-1.50359504639568,-0.275007932216388,0.1051946439735
0.48,0.412095776116403,0.924807086659672,1.59753527148455,1.70931016179987,-1.50333784189597,-0.276229913345252,0.105688455087614
0.482,0.413121570780314,0.924474265175787,1.59752293732127,1.70966898814644,-1.50308122585658,-0.277451261886419,0.106182360992797
0.484,0.414149898173172,0.924141632330849,1.59750910547238,1.71002523586438,-1.50282519994509,-0.278671974905004,0.106676362225771
0.486,0.415180757306943,0.923809189667436,1.59749377286185,1.71037890461627,-1.50256976583636,-0.279892049456867,0.107170459327546
0.488,0.416214147180705,0.92347693874121,1.59747693642552,1.71072999406544,-1.50231492521251,-0.28111148258867,0.107664652843451
0.49,0.417250066780603,0.923144881120924,1.59745859311121,1.71107850387601,-1.50206067976296,-0.282330271337933,0.108158943323168
0.492,0.418288515079815,0.92281301838844,1.59743873987878,1.71142443371289,-1.50180703118444,-0.283548412733088,0.10865333132077
0.494,0.419329491038513,0.922481352138732,1.59741737370027,1.71176778324186,-1.50155398118094,-0.284765903793536,0.109147817394746
0.496,0.420372993603824,0.922149883979901,1.59739449155999,1.71210855212956,-1.50130153146376,-0.285982741529702,0.10964240210804
0.498,0.421419021709794,0.921818615533179,1.59737009045458,1.71244674004356,-1.50104968375153,-0.287198922943095,0.110137086028081
0.5,0.422467574277348,0.921487548432941,1.59734416739316,1.71278234665239,-1.50079843977016,-0.288414445026361,0.110631869726815
0.502,0.423518650214258,0.92115668432671,1.59731671939742,1.71311537162556,-1.50054780125289,-0.289629304763342,0.111126753780736
0.504,0.424572248415098,0.920826024875166,1.5972877435017,1.71344581463362,-1.50029776994026,-0.290843499129133,0.111621738770918
0.506,0.425628367761213,0.920495571752151,1.59725723675307,1.71377367534816,-1.50004834758017,-0.292057025090136,0.112116825283045
0.508,0.426687007120678,0.920165326644675,1.5972251962115,1.71409895344188,-1.4997995359278,-0.293269879604124,0.112612013907443
0.51,0.427748165348264,0.919835291252921,1.59719161894989,1.7144216485886,-1.49955133674569,-0.294482059620294,0.113107305239111
0.512,0.428811841285401,0.91950546729025,1.59715650205419,1.71474176046331,-1.49930375180371,-0.295693562079326,0.113602699877745
0.514,0.429878033760137,0.919175856483205,1.59711984262351,1.71505928874217,-1.49905678287905,-0.296904383913441,0.114098198427777
0.516,0.430946741587108,0.918846460571513,1.59708163777022,1.7153742331026,-1.49881043175625,-0.298114522046459,0.114593801498395
0.518,0.432017963567498,0.918517281308088,1.59704188462004,1.71568659322327,-1.4985647002272,-0.29932397339386,0.115089509703578
0.52,0.433091698489001,0.918188320459035,1.59700058031211,1.71599636878415,-1.49831959009112,-0.300532734862839,0.115585323662122
0.522,0.434167945125789,0.917859579803647,1.59695772199916,1.71630355946653,-1.49807510315458,-0.301740803352369,0.116081243997667
0.524,0.435246702238473,0.917531061134412,1.59691330684755,1.71660816495307,-1.49783124123149,-0.302948175753255,0.116577271338728
0.526,0.436327968574069,0.917202766257005,1.59686733203737,1.71691018492781,-1.49758800614312,-0.304154848948199,0.117073406318718
0.528,0.437411742865961,0.916874696990294,1.59681979476258,1.71720961907622,-1.4973453997181,-0.305360819811854,0.11756964957598
0.53,0.438498023833864,0.916546855166338,1.59677069223108,1.71750646708523,-1.49710342379238,-0.306566085210889,0.118066001753808
0.532,0.439586810183794,0.916219242630379,1.59672002166479,1.71780072864327,-1.49686208020928,-0.307770642004043,0.118562463500479
0.534,0.440678100608024,0.915891861240847,1.5966677802998,1.71809240344026,-1.4966213708195,-0.308974487042191,0.119059035469273
0.536,0.441771893785058,0.915564712869354,1.59661396538643,1.71838149116769,-1.49638129748104,-0.3101776171684,0.119555718318503
0.538,0.442868188379589,0.915237799400688,1.59655857418932,1.71866799151864,-1.49614186205929,-0.311380029217989,0.120052512711538
0.54,0.443966983042466,0.91491112273281,1.59650160398758,1.71895190418777,-1.49590306642699,-0.312581720018594,0.120549419316826
0.542,0.445068276410662,0.91458468477685,1.59644305207483,1.71923322887141,-1.49566491246421,-0.313782686390222,0.121046438807922
0.544,0.446172067107234,0.914258487457099,1.59638291575934,1.71951196526756,-1.49542740205841,-0.314982925145319,0.12154357186351
0.546,0.447278353741294,0.913932532711005,1.59632119236409,1.7197881130759,-1.49519053710435,-0.316182433088826,0.122040819167425
0.548,0.448387134907968,0.913606822489161,1.59625787922691,1.72006167199787,-1.49495431950419,-0.31738120701824,0.122538181408677
0.55,0.449498409188369,0.913281358755302,1.59619297370056,1.72033264173665,-1.4947187511674,-0.31857924372368,0.123035659281475
0.552,0.450612175149558,0.912956143486296,1.59612647315281,1.72060102199721,-1.49448383401081,-0.319776539987942,0.123533253485245
0.554,0.451728431344509,0.91263117867213,1.59605837496658,1.72086681248635,-1.4942495699586,-0.320973092586567,0.124030964724659
0.556,0.452847176312079,0.912306466315906,1.59598867653998,1.72113001291272,-1.49401596094226,-0.322168898287895,0.124528793709649
0.558,0.453968408576972,0.911982008433825,1.59591737528648,1.72139062298681,-1.49378300890066,-0.323363953853137,0.125026741155429
0.56,0.455092126649704,0.91165780705518,1.59584446863492,1.72164864242107,-1.49355071577996,-0.324558256036426,0.125524807782522
0.562,0.456218329026572,0.911333864222342,1.5957699540297,1.72190407092982,-1.49331908353368,-0.325751801584889,0.126022994316769
0.564,0.457347014189618,0.911010181990748,1.59569382893082,1.72215690822939,-1.49308811412265,-0.326944587238701,0.12652130148936
0.566,0.458478180606598,0.910686762428884,1.59561609081397,1.72240715403807,-1.49285780951502,-0.328136609731153,0.127019730036845
0.568,0.459611826730947,0.910363607618278,1.59553673717068,1.72265480807615,-1.49262817168628,-0.329327865788713,0.127518280701155
0.57,0.460747951001747,0.910040719653478,1.59545576550837,1.72289987006599,-1.4923992026192,-0.330518352131086,0.128016954229621
0.572,0.461886551843691,0.909718100642041,1.59537317335046,1.723142339732,-1.49217090430386,-0.331708065471283,0.128515751374993
0.574,0.463027627667057,0.909395752704516,1.59528895823648,1.72338221680068,-1.49194327873766,-0.332897002515675,0.129014672895453
0.576,0.464171176867667,0.909073677974424,1.59520311772215,1.72361950100065,-1.49171632792528,-0.334085159964064,0.129513719554636
0.578,0.46531719782686,0.908751878598245,1.59511564937949,1.72385419206267,-1.49149005387869,-0.335272534509743,0.130012892121643
0.58,0.466465688911458,0.908430356735398,1.59502655079689,1.72408628971968,-1.49126445861714,-0.336459122839557,0.13051219137106
0.582,0.467616648473732,0.908109114558218,1.59493581957926,1.7243157937068,-1.49103954416714,-0.337644921633971,0.131011618082973
0.584,0.468770074851372,0.907788154251945,1.59484345334806,1.72454270376138,-1.49081531256249,-0.338829927567129,0.131511173042979
0.586,0.469925966367455,0.907467478014693,1.59474944974146,1.72476701962301,-1.49059176584422,-0.34001413730692,0.132010857042206
0.588,0.471084321330411,0.907147088057438,1.59465380641438,1.72498874103356,-1.49036890606064,-0.341197547515043,0.132510670877323
0.59,0.472245138033991,0.906826986603992,1.59455652103862,1.72520786773716,-1.49014673526726,-0.342380154847064,0.133010615350555
0.592,0.473408414757241,0.906507175890978,1.59445759130295,1.72542439948029,-1.48992525552685,-0.34356195595249,0.133510691269697
0.594,0.47457414976446,0.906187658167812,1.59435701491321,1.72563833601175,-1.4897044689094,-0.344742947474824,0.134010899448123
0.596,0.47574234130518,0.905868435696676,1.59425478959237,1.72584967708271,-1.48948437749209,-0.345923126051633,0.134511240704803
0.598,0.476912987614126,0.905549510752494,1.5941509130807,1.72605842244674,-1.48926498335933,-0.347102488314612,0.13501171586431
0.6,0.478086086911188,0.905230885622905,1.59404538313576,1.72626457185978,-1.48904628860268,-0.348281030889647,0.135512325756834
0.602,0.479261637401393,0.904912562608241,1.59393819753261,1.72646812508025,-1.48882829532091,-0.349458750396881,0.136013071218192
0.604,0.480439637274868,0.904594544021494,1.59382935406381,1.72666908186899,-1.48861100561995,-0.350635643450775,0.136513953089834
0.606,0.481620084706813,0.904276832188293,1.59371885053956,1.72686744198932,-1.48839442161287,-0.351811706660177,0.13701497221886
0.608,0.482802977857471,0.903959429446877,1.59360668478781,1.72706320520708,-1.48817854541989,-0.352986936628383,0.137516129458023
0.61,0.483988314872094,0.90364233814806,1.5934928546543,1.72725637129059,-1.48796337916836,-0.3541613299532,0.138017425665739
0.612,0.485176093880918,0.903325560655206,1.5933773580027,1.72744694001076,-1.48774892499274,-0.355334883227016,0.138518861706095
0.614,0.486366312999127,0.903009099344198,1.59326019271468,1.72763491114102,-1.4875351850346,-0.356507593036861,0.139020438448859
0.616,0.487558970326826,0.902692956603405,1.59314135669003,1.7278202844574,-1.48732216144258,-0.357679455964469,0.139522156769481
0.618,0.488754063949011,0.902377134833652,1.59302084784673,1.72800305973853,-1.4871098563724,-0.358850468586351,0.140024017549106
0.62,0.489951591935539,0.902061636448187,1.59289866412103,1.72818323676566,-1.48689827198684,-0.36002062747385,0.140526021674575
0.622,0.491151552341097,0.901746463872645,1.59277480346758,1.72836081532269,-1.4866874104557,-0.361189929193213,0.141028170038431
0.624,0.492353943205176,0.901431619545019,1.59264926385951,1.72853579519617,-1.48647727395584,-0.362358370305652,0.141530463538927
0.626,0.493558762552036,0.901117105915622,1.59252204328849,1.72870817617534,-1.48626786467109,-0.363525947367411,0.142032903080027
0.628,0.494766008390683,0.900802925447048,1.59239313976488,1.72887795805214,-1.48605918479229,-0.364692656929829,0.142535489571409
0.63,0.495975678714836,0.900489080614146,1.59226255131776,1.72904514062123,-1.48585123651724,-0.365858495539406,0.143038223928472
0.632,0.497187771502897,0.900175573903971,1.59213027599509,1.72920972368,-1.48564402205071,-0.36702345973787,0.143541107072334
0.634,0.498402284717928,0.899862407815755,1.59199631186372,1.72937170702861,-1.48543754360439,-0.368187546062236,0.144044139929837
0.636,0.499619216307615,0.899549584860865,1.59186065700957,1.72953109046998,-1.48523180339688,-0.369350751044879,0.144547323433548
0.638,0.500838564204245,0.899237107562765,1.59172330953764,1.72968787380984,-1.4850268036537,-0.370513071213592,0.145050658521758
0.64,0.502060326324677,0.898924978456973,1.59158426757215,1.72984205685669,-1.48482254660723,-0.371674503091655,0.145554146138485
0.642,0.503284500570311,0.898613200091027,1.59144352925663,1.72999363942192,-1.4846190344967,-0.372835043197899,0.146057787233472
0.644,0.504511084827061,0.898301775024437,1.59130109275397,1.73014262131969,-1.48441626956818,-0.373994688046771,0.146561582762187
0.646,0.50574007696533,0.897990705828645,1.59115695624656,1.73028900236709,-1.48421425407455,-0.3751534341484,0.147065533685819
0.648,0.506971474839979,0.897679995086986,1.59101111793635,1.73043278238403,-1.4840129902755,-0.37631127800866,0.147569640971281
0.65,0.508205276290301,0.89736964539464,1.59086357604494,1.73057396119335,-1.48381248043744,-0.377468216129236,0.148073905591203
0.652,0.509441479139993,0.897059659358588,1.59071432881369,1.73071253862077,-1.48361272683357,-0.37862424500769,0.148578328523931
0.654,0.51068008119713,0.896750039597571,1.59056337450377,1.73084851449496,-1.4834137317438,-0.379779361137527,0.149082910753522
0.656,0.511921080254135,0.896440788742039,1.59041071139629,1.73098188864751,-1.4832154974547,-0.380933561008256,0.149587653269741
0.658,0.513164474087757,0.896131909434109,1.59025633779236,1.73111266091297,-1.48301802625956,-0.382086841105458,0.150092557068056
0.66,0.514410260459039,0.895823404327517,1.59010025201319,1.73124083112886,-1.48282132045828,-0.383239197910851,0.15059762314963
0.662,0.515658437113297,0.89551527608757,1.58994245240019,1.73136639913569,-1.48262538235739,-0.384390627902356,0.151102852521318
0.664,0.516909001780089,0.895207527391094,1.58978293731502,1.73148936477694,-1.48243021427003,-0.385541127554157,0.151608246195661
0.666,0.51816195217319,0.894900160926391,1.58962170513971,1.73160972789914,-1.48223581851586,-0.386690693336772,0.152113805190873
0.668,0.519417285990568,0.894593179393185,1.58945875427673,1.7317274883518,-1.48204219742113,-0.387839321717115,0.15261953053084
0.67,0.520675000914355,0.894286585502574,1.58929408314909,1.73184264598752,-1.48184935331856,-0.38898700915856,0.153125423245108
0.672,0.521935094610826,0.893980381976974,1.5891276902004,1.7319552006619,-1.48165728854736,-0.390133752121008,0.153631484368872
0.674,0.523197564730369,0.893674571550073,1.58895957389499,1.73206515223364,-1.48146600545321,-0.391279547060951,0.154137714942972
0.676,0.524462408907462,0.893369156966773,1.58878973271797,1.73217250056449,-1.48127550638819,-0.392424390431536,0.154644116013877
0.678,0.525729624760646,0.893064140983141,1.58861816517533,1.73227724551931,-1.48108579371077,-0.393568278682629,0.155150688633677
0.68,0.526999209892505,0.892759526366351,1.58844486979399,1.73237938696605,-1.4808968697858,-0.394711208260885,0.155657433860071
0.682,0.528271161889635,0.892455315894632,1.58826984512195,1.73247892477576,-1.48070873698442,-0.395853175609803,0.156164352756354
0.684,0.529545478322624,0.892151512357212,1.58809308972831,1.73257585882264,-1.48052139768411,-0.396994177169802,0.156671446391406
0.686,0.530822156746026,0.891848118554258,1.58791460220337,1.73267018898401,-1.48033485426858,-0.398134209378273,0.157178715839674
0.688000000000001,0.532101194698337,0.891545137296824,1.58773438115874,1.73276191514032,-1.48014910912778,-0.399273268669656,0.157686162181166
0.690000000000001,0.533382589701972,0.891242571406793,1.58755242522738,1.7328510371752,-1.47996416465785,-0.400411351475495,0.158193786501428
0.692000000000001,0.53466633926324,0.890940423716815,1.58736873306373,1.73293755497542,-1.4797800232611,-0.401548454224505,0.158701589891533
0.694000000000001,0.535952440872321,0.89063869707025,1.58718330334374,1.73302146843096,-1.47959668734595,-0.40268457334264,0.159209573448066
0.696000000000001,0.537240892003244,0.890337394321109,1.586996134765,1.73310277743496,-1.47941415932693,-0.403819705253151,0.159717738273103
0.698000000000001,0.538531690113862,0.890036518333992,1.58680722604678,1.73318148188375,-1.4792324416246,-0.404953846376654,0.1602260854742
0.700000000000001,0.539824832645832,0.88973607198403,1.58661657593013,1.73325758167688,-1.47905153666555,-0.406086993131194,0.160734616164367
0.702000000000001,0.541120317024588,0.889436058156818,1.58642418317797,1.73333107671711,-1.47887144688234,-0.407219141932305,0.161243331462059
0.704000000000001,0.542418140659324,0.889136479748358,1.58623004657515,1.7334019669104,-1.47869217471346,-0.40835028919308,0.161752232491148
0.706000000000001,0.543718300942968,0.888837339664992,1.58603416492852,1.73347025216597,-1.47851372260333,-0.409480431324229,0.16226132038091
0.708000000000001,0.54502079525216,0.888538640823339,1.58583653706706,1.73353593239626,-1.47833609300219,-0.410609564734145,0.162770596266001
0.710000000000001,0.546325620947233,0.888240386150234,1.5856371618419,1.73359900751695,-1.47815928836615,-0.411737685828969,0.163280061286435
0.712000000000001,0.547632775372191,0.887942578582658,1.58543603812642,1.73365947744698,-1.47798331115705,-0.412864791012652,0.163789716587566
0.714000000000001,0.548942255854684,0.887645221067672,1.58523316481633,1.73371734210856,-1.47780816384249,-0.413990876687015,0.164299563320064
0.716000000000001,0.550254059705993,0.887348316562356,1.58502854082976,1.73377260142713,-1.47763384889577,-0.415115939251818,0.16480960263989
0.718000000000001,0.551568184221004,0.887051868033737,1.58482216510729,1.73382525533145,-1.47746036879584,-0.416239975104821,0.165319835708274
0.720000000000001,0.552884626678192,0.886755878458723,1.5846140366121,1.73387530375352,-1.47728772602725,-0.417362980641844,0.165830263691691
0.722000000000001,0.554203384339596,0.886460350824033,1.58440415432997,1.73392274662865,-1.47711592308013,-0.418484952256834,0.166340887761837
0.724000000000001,0.555524454450804,0.886165288126131,1.58419251726939,1.73396758389542,-1.47694496245012,-0.419605886341925,0.166851709095599
0.726000000000001,0.556847834240929,0.885870693371153,1.58397912446164,1.73400981549571,-1.47677484663834,-0.420725779287503,0.167362728875035
0.728000000000001,0.558173520922593,0.885576569574838,1.58376397496086,1.73404944137472,-1.47660557815134,-0.421844627482264,0.16787394828734
0.730000000000001,0.559501511691904,0.885282919762457,1.58354706784411,1.73408646148093,-1.47643715950105,-0.422962427313284,0.168385368524824
0.732000000000001,0.560831803728442,0.88498974696874,1.58332840221145,1.73412087576615,-1.47626959320474,-0.424079175166072,0.168896990784883
0.734000000000001,0.562164394195236,0.884697054237806,1.58310797718603,1.73415268418549,-1.47610288178497,-0.42519486742464,0.169408816269966
0.736000000000001,0.563499280238748,0.884404844623089,1.58288579191413,1.73418188669737,-1.47593702776951,-0.426309500471559,0.169920846187549
0.738000000000001,0.564836458988852,0.884113121187264,1.58266184556526,1.73420848326357,-1.47577203369137,-0.427423070688025,0.170433081750106
0.740000000000001,0.566175927558821,0.883821887002171,1.5824361373322,1.73423247384916,-1.47560790208866,-0.42853557445392,0.170945524175074
0.742000000000001,0.567517683045306,0.883531145148745,1.58220866643111,1.73425385842254,-1.47544463550459,-0.429647008147871,0.171458174684822
0.744000000000001,0.56886172252832,0.883240898716936,1.58197943210157,1.73427263695546,-1.47528223648741,-0.430757368147312,0.171971034506622
0.746000000000001,0.570208043071218,0.882951150805634,1.58174843360665,1.73428880942298,-1.47512070759036,-0.431866650828549,0.172484104872614
0.748000000000001,0.571556641720685,0.882661904522594,1.58151567023301,1.73430237580353,-1.47496005137162,-0.432974852566815,0.172997387019772
0.750000000000001,0.572907515506717,0.882373162984358,1.58128114129091,1.73431333607884,-1.47480027039421,-0.434081969736338,0.173510882189869
0.752000000000001,0.574260661442607,0.882084929316175,1.58104484611434,1.734321690234,-1.47464136722603,-0.435187998710394,0.174024591629444
0.754000000000001,0.575616076524924,0.881797206651926,1.58080678406105,1.73432743825743,-1.47448334443972,-0.436292935861373,0.174538516589767
0.756000000000001,0.576973757733505,0.881509998134041,1.58056695451263,1.73433058014092,-1.47432620461263,-0.437396777560839,0.175052658326798
0.758000000000001,0.578333702031433,0.881223306913424,1.58032535687455,1.73433111587956,-1.4741699503268,-0.438499520179586,0.175567018101155
0.760000000000001,0.579695906365026,0.880937136149367,1.58008199057628,1.73432904547181,-1.47401458416884,-0.439601160087703,0.176081597178075
0.762000000000001,0.581060367663824,0.880651489009475,1.57983685507131,1.73432436891946,-1.47386010872993,-0.440701693654633,0.176596396827374
0.764000000000001,0.582427082840568,0.88036636866958,1.5795899498372,1.73431708622767,-1.47370652660573,-0.441801117249229,0.177111418323409
0.766000000000001,0.583796048791196,0.880081778313663,1.5793412743757,1.73430719740491,-1.47355384039632,-0.442899427239818,0.177626662945039
0.768000000000001,0.585167262394818,0.879797721133767,1.57909082821277,1.73429470246301,-1.47340205270617,-0.443996619994258,0.178142131975585
0.770000000000001,0.586540720513715,0.879514200329917,1.57883861089866,1.73427960141713,-1.47325116614405,-0.445092691879997,0.178657826702786
0.772000000000001,0.587916419993315,0.879231219110036,1.57858462200795,1.73426189428578,-1.47310118332296,-0.446187639264133,0.179173748418762
0.774000000000001,0.589294357662189,0.878948780689859,1.57832886113965,1.73424158109082,-1.47295210686012,-0.447281458513473,0.179689898419965
0.776000000000001,0.590674530332033,0.878666888292853,1.57807132791721,1.73421866185741,-1.47280393937686,-0.44837414599459,0.180206278007144
0.778000000000001,0.592056934797661,0.878385545150123,1.57781202198864,1.73419313661408,-1.47265668349856,-0.449465698073883,0.180722888485294
0.780000000000001,0.593441567836988,0.878104754500334,1.5775509430265,1.73416500539268,-1.47251034185463,-0.450556111117633,0.181239731163617
0.782000000000001,0.594828426211026,0.877824519589624,1.57728809072802,1.73413426822839,-1.47236491707839,-0.451645381492064,0.181756807355473
0.784000000000001,0.596217506663866,0.87754484367151,1.57702346481513,1.7341009251597,-1.47222041180703,-0.452733505563398,0.182274118378338
0.786000000000001,0.597608805922672,0.87726573000681,1.57675706503451,1.73406497622846,-1.47207682868156,-0.453820479697916,0.182791665553752
0.788000000000001,0.599002320697671,0.876987181863549,1.57648889115765,1.73402642147981,-1.47193417034672,-0.45490630026201,0.183309450207279
0.790000000000001,0.600398047682141,0.876709202516871,1.57621894298094,1.73398526096222,-1.47179243945091,-0.455990963622245,0.183827473668453
0.792000000000001,0.601795983552404,0.876431795248953,1.57594722032567,1.73394149472746,-1.47165163864617,-0.457074466145414,0.184345737270735
0.794000000000001,0.603196124967817,0.876154963348912,1.57567372303813,1.73389512283062,-1.47151177058802,-0.458156804198595,0.184864242351456
0.796000000000001,0.604598468570761,0.875878710112718,1.57539845098963,1.73384614533009,-1.4713728379355,-0.459237974149207,0.185382990251778
0.798000000000001,0.606003010986638,0.875603038843101,1.57512140407657,1.73379456228755,-1.471234843351,-0.460317972365066,0.185901982316635
0.800000000000001,0.607409748823857,0.875327952849463,1.57484258222051,1.73374037376799,-1.47109778950029,-0.461396795214443,0.186421219894683
0.802000000000001,0.608818678673833,0.875053455447783,1.57456198536819,1.73368357983966,-1.47096167905234,-0.462474439066119,0.186940704338253
0.804000000000001,0.610229797110975,0.874779549960529,1.57427961349158,1.73362418057413,-1.47082651467933,-0.463550900289437,0.187460437003294
0.806000000000001,0.611643100692684,0.874506239716561,1.57399546658798,1.73356217604621,-1.47069229905656,-0.464626175254363,0.187980419249321
0.808000000000001,0.613058585959342,0.874233528051042,1.57370954468001,1.73349756633399,-1.47055903486235,-0.465700260331539,0.188500652439361
0.810000000000001,0.614476249434314,0.873961418305345,1.57342184781567,1.73343035151884,-1.47042672477799,-0.466773151892335,0.189021137939902
0.812000000000001,0.615896087623933,0.873689913826956,1.57313237606844,1.73336053168536,-1.47029537148767,-0.467844846308908,0.189541877120831
0.814000000000001,0.617318097017503,0.873419017969381,1.57284112953726,1.73328810692141,-1.47016497767838,-0.468915339954255,0.190062871355384
0.816000000000001,0.618742274087295,0.873148734092055,1.57254810834662,1.73321307731809,-1.47003554603984,-0.469984629202264,0.190584122020088
0.818000000000001,0.620168615288535,0.872879065560241,1.57225331264657,1.73313544296973,-1.46990707926447,-0.471052710427774,0.191105630494703
0.820000000000001,0.62159711705941,0.872610015744938,1.57195674261282,1.7330552039739,-1.46977958004723,-0.472119580006623,0.191627398162166
0.822000000000001,0.623027775821061,0.872341588022787,1.57165839844673,1.73297236043136,-1.46965305108561,-0.473185234315705,0.192149426408529
0.824000000000001,0.624460587977579,0.872073785775971,1.57135828037537,1.7328869124461,-1.46952749507954,-0.47424966973302,0.192671716622905
0.826000000000001,0.625895549916005,0.871806612392117,1.5710563886516,1.7327988601253,-1.46940291473127,-0.475312882637732,0.193194270197405
0.828000000000001,0.627332658006332,0.871540071264207,1.57075272355404,1.73270820357932,-1.46927931274535,-0.476374869410216,0.193717088527078
0.830000000000001,0.628771908601495,0.871274165790472,1.57044728538719,1.73261494292173,-1.46915669182849,-0.477435626432114,0.19424017300985
0.832000000000001,0.630213298037378,0.871008899374296,1.57014007448141,1.73251907826924,-1.46903505468952,-0.478495150086386,0.194763525046463
0.834000000000001,0.631656822632812,0.870744275424124,1.56983109119298,1.73242060974174,-1.4689144040393,-0.479553436757363,0.195287146040414
0.836000000000001,0.633102478689575,0.870480297353353,1.56952033590416,1.73231953746225,-1.46879474259064,-0.480610482830795,0.195811037397887
0.838000000000001,0.634550262492392,0.870216968580243,1.56920780902321,1.73221586155694,-1.46867607305818,-0.48166628469391,0.196335200527698
0.840000000000001,0.636000170308938,0.869954292527811,1.56889351098442,1.73210958215513,-1.46855839815836,-0.482720838735454,0.196859636841221
0.842000000000001,0.637452198389838,0.869692272623734,1.56857744224815,1.73200069938921,-1.46844172060932,-0.483774141345754,0.197384347752331
0.844000000000001,0.638906342968672,0.869430912300249,1.56825960330088,1.73188921339473,-1.46832604313078,-0.484826188916759,0.197909334677334
0.846000000000001,0.640362600261975,0.869170214994053,1.56793999465524,1.73177512431028,-1.468211368444,-0.485876977842096,0.198434599034903
0.848000000000001,0.641820966469242,0.868910184146201,1.56761861685004,1.73165843227758,-1.46809769927166,-0.486926504517117,0.19896014224601
0.850000000000001,0.643281437772933,0.868650823202005,1.56729547045029,1.73153913744139,-1.4679850383378,-0.487974765338951,0.19948596573386
0.852000000000001,0.644744010338476,0.868392135610934,1.56697055604728,1.73141723994954,-1.46787338836771,-0.48902175670655,0.200012070923822
0.854000000000001,0.64620868031427,0.868134124826513,1.56664387425853,1.73129273995289,-1.46776275208785,-0.490067475020745,0.200538459243361
0.856000000000001,0.647675443831696,0.867876794306219,1.56631542572793,1.73116563760535,-1.46765313222577,-0.491111916684285,0.201065132121969
0.858000000000001,0.649144297005118,0.867620147511379,1.56598521112567,1.73103593306384,-1.46754453151001,-0.492155078101897,0.201592090991095
0.860000000000001,0.65061523593189,0.867364187907071,1.56565323114831,1.73090362648827,-1.46743695267,-0.493196955680325,0.202119337284073
0.862000000000001,0.652088256692368,0.867108918962015,1.56531948651884,1.73076871804157,-1.46733039843599,-0.494237545828382,0.202646872436052
0.864000000000001,0.653563355349911,0.866854344148476,1.56498397798665,1.73063120788962,-1.46722487153896,-0.495276844957,0.203174697883929
0.866000000000001,0.655040527950894,0.866600466942159,1.5646467063276,1.73049109620127,-1.46712037471049,-0.496314849479273,0.203702815066266
0.868000000000001,0.656519770524717,0.866347290822102,1.56430767234401,1.73034838314831,-1.46701691068271,-0.497351555810508,0.20423122542323
0.870000000000001,0.658001079083809,0.866094819270579,1.56396687686473,1.73020306890547,-1.46691448218819,-0.498386960368268,0.20475993039651
0.872000000000001,0.659484449623645,0.865843055772988,1.56362432074513,1.73005515365041,-1.46681309195986,-0.499421059572424,0.205288931429246
0.874000000000001,0.660969878122753,0.865592003817755,1.56328000486712,1.72990463756365,-1.46671274273087,-0.500453849845198,0.205818229965956
0.876000000000001,0.662457360542723,0.865341666896222,1.56293393013922,1.72975152082862,-1.46661343723456,-0.501485327611209,0.20634782745246
0.878000000000001,0.663946892828224,0.865092048502547,1.5625860974965,1.72959580363163,-1.4665151782043,-0.502515489297519,0.206877725335803
0.880000000000001,0.665438470907013,0.864843152133601,1.56223650790071,1.72943748616182,-1.46641796837345,-0.50354433133368,0.207407925064179
0.882000000000001,0.666932090689948,0.864594981288854,1.56188516234017,1.72927656861116,-1.46632181047522,-0.504571850151778,0.207938428086857
0.884000000000001,0.668427748071,0.864347539470282,1.56153206182992,1.72911305117447,-1.46622670724262,-0.50559804218648,0.208469235854099
0.886000000000001,0.669925438927274,0.864100830182251,1.56117720741164,1.72894693404934,-1.46613266140828,-0.506622903875073,0.209000349817084
0.888000000000001,0.671425159119014,0.863854856931418,1.56082060015371,1.72877821743615,-1.46603967570445,-0.507646431657516,0.209531771427833
0.890000000000001,0.672926904489625,0.863609623226621,1.56046224115124,1.72860690153805,-1.46594775286284,-0.508668621976478,0.210063502139123
0.892000000000001,0.674430670865689,0.863365132578778,1.56010213152603,1.72843298656094,-1.46585689561452,-0.509689471277386,0.210595543404412
0.894000000000001,0.675936454056978,0.863121388500776,1.55974027242666,1.72825647271344,-1.46576710668985,-0.510708976008465,0.211127896677758
0.896000000000001,0.677444249856473,0.862878394507367,1.55937666502844,1.72807736020688,-1.46567838881836,-0.511727132620783,0.21166056341374
0.898000000000001,0.678954054040382,0.862636154115063,1.55901131053346,1.7278956492553,-1.46559074472864,-0.512743937568295,0.212193545067371
0.900000000000001,0.68046586236816,0.862394670842026,1.55864421017057,1.72771134007538,-1.46550417714826,-0.513759387307882,0.212726843094021
0.902000000000001,0.681979670582525,0.862153948207967,1.55827536519544,1.72752443288647,-1.46541868880367,-0.514773478299397,0.213260458949336
0.904000000000001,0.68349547440948,0.861913989734032,1.55790477689051,1.72733492791056,-1.46533428242004,-0.515786207005705,0.213794394089151
0.906000000000001,0.685013269558333,0.861674798942701,1.55753244656506,1.72714282537223,-1.46525096072125,-0.516797569892724,0.214328649969407
0.908000000000001,0.686533051721719,0.861436379357682,1.55715837555517,1.72694812549868,-1.4651687264297,-0.51780756342947,0.21486322804607
0.910000000000001,0.68805481657562,0.861198734503797,1.55678256522375,1.72675082851966,-1.46508758226627,-0.518816184088091,0.215398129775046
0.912000000000001,0.689578559779388,0.860961867906883,1.55640501696055,1.72655093466749,-1.46500753095015,-0.519823428343917,0.215933356612093
0.914000000000001,0.691104276975769,0.86072578309368,1.55602573218213,1.72634844417699,-1.4649285751988,-0.520829292675493,0.216468910012739
0.916000000000001,0.692631963790926,0.860490483591726,1.55564471233194,1.72614335728551,-1.46485071772781,-0.521833773564622,0.217004791432196
0.918000000000001,0.694161615834466,0.860255972929249,1.55526195888024,1.7259356742329,-1.46477396125078,-0.522836867496405,0.217541002325271
0.920000000000001,0.695693228699459,0.86002225463506,1.55487747332414,1.72572539526144,-1.46469830847925,-0.523838570959278,0.218077544146281
0.922000000000001,0.697226797962472,0.859789332238447,1.55449125718762,1.72551252061588,-1.46462376212257,-0.524838880445057,0.218614418348965
0.924000000000001,0.698762319183589,0.859557209269066,1.5541033120215,1.72529705054338,-1.46455032488778,-0.525837792448971,0.219151626386398
0.926000000000001,0.70029978790644,0.859325889256835,1.55371363940345,1.72507898529349,-1.46447799947954,-0.526835303469702,0.219689169710901
0.928000000000001,0.701839199658234,0.859095375731825,1.553322240938,1.72485832511816,-1.46440678859996,-0.527831410009425,0.220227049773952
0.930000000000001,0.703380549949778,0.858865672224156,1.55292911825653,1.72463507027167,-1.46433669494857,-0.528826108573845,0.220765268026098
0.932000000000001,0.704923834275515,0.858636782263888,1.55253427301724,1.72440922101062,-1.46426772122215,-0.529819395672234,0.221303825916866
0.934000000000001,0.706469048113551,0.858408709380912,1.5521377069052,1.72418077759394,-1.46419987011463,-0.53081126781747,0.221842724894669
0.936000000000001,0.708016186925684,0.858181457104846,1.5517394216323,1.72394974028283,-1.464133144317,-0.531801721526072,0.222381966406721
0.938000000000001,0.709565246157439,0.857955028964927,1.55133941893729,1.72371610934073,-1.46406754651717,-0.532790753318239,0.222921551898944
0.940000000000001,0.711116221238098,0.857729428489903,1.55093770058571,1.72347988503334,-1.4640030793999,-0.533778359717884,0.223461482815873
0.942000000000001,0.712669107580733,0.857504659207926,1.55053426836993,1.72324106762854,-1.46393974564663,-0.534764537252671,0.224001760600571
0.944000000000001,0.714223900582241,0.857280724646449,1.55012912410912,1.72299965739641,-1.46387754793543,-0.535749282454052,0.224542386694531
0.946000000000001,0.715780595623377,0.857057628332111,1.54972226964928,1.72275565460918,-1.46381648894084,-0.536732591857301,0.225083362537588
0.948000000000001,0.717339188068792,0.85683537379064,1.54931370686316,1.72250905954121,-1.46375657133378,-0.53771446200155,0.22562468956782
0.950000000000001,0.718899673267065,0.85661396454674,1.54890343765031,1.72225987246896,-1.46369779778142,-0.538694889429823,0.226166369221463
0.952000000000001,0.720462046550743,0.856393404123984,1.54849146393702,1.72200809367097,-1.46364017094711,-0.539673870689072,0.226708402932809
0.954000000000001,0.722026303236377,0.856173696044713,1.54807778767637,1.72175372342785,-1.4635836934902,-0.540651402330209,0.227250792134119
0.956000000000001,0.72359243862456,0.855954843829926,1.54766241084813,1.72149676202222,-1.46352836806596,-0.541627480908142,0.227793538255521
0.958000000000001,0.725160447999967,0.855736850999173,1.54724533545882,1.72123720973869,-1.46347419732549,-0.542602102981809,0.228336642724924
0.960000000000001,0.726730326631394,0.855519721070452,1.54682656354166,1.72097506686386,-1.46342118391554,-0.543575265114208,0.228880106967914
0.962000000000001,0.7283020697718,0.8553034575601,1.54640609715655,1.72071033368628,-1.46336933047848,-0.544546963872433,0.229423932407666
0.964000000000001,0.729875672658345,0.855088063982692,1.54598393839006,1.72044301049639,-1.46331863965209,-0.545517195827706,0.229968120464842
0.966000000000001,0.731451130512437,0.85487354385093,1.54556008935541,1.72017309758653,-1.46326911406952,-0.546485957555409,0.230512672557499
0.968000000000001,0.733028438539769,0.854659900675541,1.54513455219245,1.71990059525092,-1.46322075635914,-0.547453245635117,0.23105759010099
0.970000000000001,0.734607591930368,0.854447137965172,1.54470732906763,1.7196255037856,-1.46317356914442,-0.548419056650628,0.231602874507869
0.972000000000001,0.736188585858637,0.854235259226282,1.544278422174,1.71934782348839,-1.46312755504384,-0.549383387189995,0.232148527187791
0.974000000000001,0.7377714154834,0.854024267963042,1.54384783373116,1.71906755465893,-1.46308271667073,-0.550346233845558,0.23269454954742
0.976000000000001,0.739356075947947,0.853814167677228,1.54341556598525,1.71878469759857,-1.46303905663319,-0.551307593213976,0.233240942990322
0.978000000000001,0.740942562380084,0.853604961868114,1.54298162120891,1.71849925261039,-1.46299657753396,-0.552267461896253,0.233787708916878
0.980000000000001,0.74253086989218,0.853396654032375,1.5425460017013,1.71821121999916,-1.46295528197029,-0.553225836497772,0.234334848724176
0.982000000000001,0.744120993581211,0.853189247663977,1.542108709788,1.7179206000713,-1.46291517253385,-0.554182713628324,0.234882363805919
0.984000000000001,0.745712928528814,0.852982746254073,1.54166974782104,1.71762739313486,-1.46287625181059,-0.555138089902139,0.235430255552321
0.986000000000001,0.747306669801336,0.852777153290908,1.54122911817886,1.71733159949949,-1.4628385223806,-0.556091961937912,0.235978525350012
0.988000000000001,0.748902212449883,0.852572472259706,1.54078682326625,1.7170332194764,-1.46280198681805,-0.557044326358833,0.236527174581937
0.990000000000001,0.750499551510374,0.852368706642572,1.54034286551436,1.71673225337834,-1.46276664769103,-0.557995179792617,0.237076204627253
0.992000000000001,0.752098682003593,0.852165859918391,1.53989724738063,1.71642870151956,-1.46273250756142,-0.558944518871534,0.237625616861236
0.994000000000001,0.753699598935238,0.851963935562724,1.53944997134879,1.71612256421578,-1.46269956898482,-0.55989234023243,0.238175412655175
0.996000000000001,0.755302297295983,0.851762937047704,1.53900103992882,1.71581384178417,-1.46266783451038,-0.560838640516764,0.238725593376274
0.998000000000001,0.756906772061525,0.85156286784194,1.53855045565687,1.7155025345433,-1.4626373066807,-0.561783416370628,0.239276160387549
1,0.758513018192645,0.85136373141041,1.5380982210953,1.71518864281313,-1.46260798803172,-0.562726664444779,0.239827115047732
1.002,0.760121030635263,0.851165531214365,1.53764433883257,1.71487216691494,-1.46257988109258,-0.56366838139466,0.240378458711165
1.004,0.76172919481938,0.850968474709213,1.53718927241537,1.71455342542013,-1.46255302535324,-0.56460762397024,0.240929648748077
1.006,0.763334277846886,0.850772968998806,1.53673395490576,1.71423306805792,-1.46252749178502,-0.565542516737705,0.241479597042579
1.008,0.764933032822655,0.850579414161899,1.53627933296572,1.71391176514017,-1.46250334251824,-0.566471196624796,0.242027213011431
1.01,0.766522199073563,0.850388203246982,1.53582636669269,1.71359020737919,-1.46248063087678,-0.567391812881454,0.242571403604126
1.012,0.768098502436208,0.850199722302999,1.53537602938591,1.71326910560232,-1.4624594014561,-0.568302526976553,0.243111073314558
1.014,0.769658655611943,0.850014350446767,1.53492930724412,1.71294919036331,-1.46243969024533,-0.569201512429837,0.243645124204465
1.016,0.771199358587896,0.849832459967934,1.53448719899545,1.71263121145076,-1.46242152479363,-0.570086954578155,0.244172455938864
1.018,0.772717299122628,0.849654416472253,1.53405071545996,1.71231593729341,-1.46240492442135,-0.570957050275173,0.24469196583363
1.02,0.774209153295166,0.849480579063933,1.53362087904565,1.71200415426268,-1.46238990047625,-0.571810007523754,0.245202548915392
1.022,0.775671586116195,0.849311300567766,1.53319872317847,1.71169666587236,-1.46237645663525,-0.572644045040266,0.245703097993917
1.024,0.777101252200228,0.849146927791694,1.53278529166706,1.71139429187555,-1.46236458925177,-0.573457391750115,0.246192503747102
1.026,0.778494796497713,0.848987801830413,1.53238163800274,1.711097867259,-1.46235428774923,-0.574248286213881,0.246669654818711
1.028,0.779848855086078,0.848834258410554,1.53198882459542,1.71080824113483,-1.46234553506075,-0.575014975983496,0.247133437928979
1.03,0.78116005601885,0.848686628277909,1.53160792194592,1.71052627552974,-1.4623383081153,-0.575755716887987,0.247582737998157
1.032,0.782425020232096,0.848545237627096,1.53124000775516,1.71025284407179,-1.46233257837058,-0.576468772248378,0.248016438283103
1.034,0.783640362507572,0.848410408573973,1.53088616597073,1.70998883057466,-1.46232831239258,-0.577152412021443,0.248433420526975
1.036,0.7848026924921,0.848282459671025,1.53054748577114,1.70973512751965,-1.46232547248219,-0.577804911872101,0.248832565122065
1.038,0.785908615772882,0.848161706465851,1.53022506048805,1.70949263443516,-1.46232401734862,-0.57842455217434,0.24921275128582
1.04,0.78695473500859,0.848048462102792,1.52991998646666,1.70926225617395,-1.4623239028299,-0.579009616940665,0.249572857250063
1.042,0.787937651116305,0.847943037967608,1.52963336186444,1.70904490108794,-1.46232508266035,-0.579558392680183,0.249911760463395
1.044,0.788853964514537,0.847845744375028,1.52936628538811,1.70884147910071,-1.46232750928497,-0.580069167185563,0.250228337806779
1.046,0.789700276422797,0.847756891298874,1.52911985496879,1.70865289967754,-1.4623311347206,-0.580540228249231,0.250521465822255
1.048,0.790474531515875,0.847676635331512,1.52889476407133,1.70847977114713,-1.46233589722404,-0.580970607186103,0.250790469763278
1.05,0.791179477875349,0.847604587113496,1.52869025955989,1.70832162230551,-1.4623416888769,-0.581361990782562,0.251036280427551
1.052,0.791818305861189,0.84754031645905,1.52850544503333,1.7081778637077,-1.46234840719383,-0.58171628864015,0.251259974198561
1.054,0.792394220156922,0.847483400874214,1.52833940991484,1.70804788416909,-1.4623559591194,-0.582035396968814,0.251462630091183
1.056,0.792910438356313,0.847433424873286,1.52819123084624,1.70793105283471,-1.46236426018755,-0.58232119983247,0.251645329536891
1.058,0.79337018963127,0.847389979322948,1.52805997300734,1.70782672114435,-1.46237323371983,-0.582575570339205,0.25180915617816
1.06,0.793776713478906,0.847352660815312,1.52794469136149,1.7077342246939,-1.46238281006298,-0.582800371774751,0.251955195672332
1.062,0.794133258545905,0.847321071071069,1.52784443182793,1.70765288499264,-1.46239292586635,-0.582997458678001,0.252084535505199
1.064,0.7944430815285,0.847294816373726,1.52775823238202,1.7075820111171,-1.46240352339968,-0.583168677857466,0.252198264814529
1.066,0.794709446146578,0.847273507035861,1.52768512408382,1.7075209012611,-1.46241454991172,-0.583315869347713,0.252297474223733
1.068,0.794935621134677,0.847256582178173,1.52762398533234,1.70746886022957,-1.46242568999227,-0.583440857634691,0.252383050855421
1.07,0.795124876564734,0.847242800968848,1.52757311565017,1.70742524724721,-1.46243558784952,-0.583545424258445,0.252455082111308
1.072,0.79528048963571,0.847231324436233,1.52753114513836,1.70738937777344,-1.4624435007616,-0.583631368484945,0.252514124239224
1.074,0.795405743378718,0.847221698745122,1.52749702203415,1.70736052646407,-1.46244927420063,-0.583700507250131,0.25256118338822
1.076,0.795503924901395,0.847213705083353,1.5274698878575,1.70733794208708,-1.46245311274696,-0.583754667567952,0.252597540065297
1.078,0.795578324099649,0.847207244726261,1.5274489817838,1.707320858976,-1.46245540452512,-0.583795680766422,0.252624614669369
1.08,0.795632232709233,0.847202255186311,1.52743357092267,1.70730850546845,-1.46245659303338,-0.58382537835427,0.252643869376861
1.082,0.795668943607795,0.847198653344747,1.52742290313086,1.70730010975261,-1.46245709017542,-0.583845589308781,0.252656741614279
1.084,0.795691750307612,0.847196301672216,1.52741617913159,1.70729490350484,-1.46245722458809,-0.583858138579516,0.252664604579035
1.086,0.79570394660047,0.847194993819697,1.52741254083593,1.70729212367106,-1.4624572196004,-0.583864846606945,0.25266875045968
1.088,0.79570882633024,0.84719445593062,1.52741107280446,1.70729101272849,-1.4624571952486,-0.583867529655005,0.252670392078664
1.09,0.795709683276719,0.847194360012352,1.52741081376797,1.70729081775968,-1.4624571887431,-0.583868000753386,0.252670678660393

1 t q1 q2 q3 q4 q5 q6 q7
2 0 0.25 1 1.5707963267949 1.5707963267949 -1.5707963267949 0 0
3 0.002 0.25 1 1.5707963267949 1.5707963267949 -1.5707963267949 0 0
4 0.004 0.250001842320363 0.25000047042195 1.00000035621738 0.999999643059012 1.57079547429742 1.57079655522309 1.57079444210524 1.57079724068573 -1.57079668301227 -1.57079596985391 3.34430494936117e-07 -1.30973721143836e-06 1.42912469251269e-07 4.82598248142038e-07
5 0.006 0.250009211599068 0.250002352119835 1.00000178109261 0.999998215295479 1.57079206431392 1.57079746893306 1.57078690333631 1.57080089623876 -1.57079810788309 -1.57079454209152 1.67216263610067e-06 -6.54868491622439e-06 7.14561905387093e-07 2.41299125801426e-06
6 0.008 0.250025792451452 0.250006586030861 1.0000049871135 0.999995002831306 1.57078439190875 1.57079952475507 1.57076994101371 1.57080912114056 -1.57080131385445 -1.57079132964004 4.68215140661819e-06 -1.83363069831887e-05 2.00076916853545e-06 6.75637568596772e-06
7 0.01 0.25005526942355 0.250014113346931 1.00001068691258 0.999989291798997 1.57077075230822 1.57080317944813 1.57073978540339 1.57082374281808 -1.57080701340708 -1.57078561867083 1.00336083670537e-05 -3.92920384698955e-05 4.28734398236013e-06 1.44779486252094e-05
8 0.012 0.250101326918013 0.25002587578704 1.00001959342197 0.999980368352981 1.57074944107367 1.57080888962368 1.5706926662341 1.57084658816104 -1.57081591909138 -1.570776695436 1.83962760218046e-05 -7.20352548050359e-05 7.8600730098651e-06 2.65429080714911e-05
9 0.014 0.250167649092643 0.250042815970618 1.00003242008538 0.999967518685138 1.57071875433882 1.57081711164106 1.57062481231678 1.57087948314138 -1.57082874357675 -1.57076384632562 3.04408038203672e-05 -0.000119185229528684 1.3004703478399e-05 4.39164535541204e-05
10 0.016 0.250257919731615 0.250065877891993 1.00004988112752 0.999950029044509 1.57067698911111 1.57082830147452 1.57053245106106 1.57092425232965 -1.57084619971424 -1.5707463579404 4.68392258226527e-05 -0.000183361080548634 2.00069223188819e-05 6.75637869166764e-05
11 0.018 0.250375822089508 0.250096007496088 1.00007269188062 0.999927185761162 1.57062244363736 1.57084291455164 1.57041180788839 1.57098271830821 -1.57086900061264 -1.5707235171799 6.8265540079134e-05 -0.000267181704862094 2.91523307867103e-05 9.84501132239856e-05
12 0.02 0.25052503870832 0.250134153355467 1.00010156916829 0.999898275274187 1.57055341783365 1.570861405563 1.57025910554178 1.57105670098111 -1.57089785972805 -1.57069461134612 9.53963898036617e-05 -0.000373265701722758 4.07264145527739e-05 0.000137540641784734
13 0.022 0.250709251207703 0.250181267448461 1.00013723174661 0.999862584163762 1.57046821377978 1.57088422824305 1.57007056329152 1.57114801678116 -1.57093349096721 -1.57065892826264 0.000128911846446335 -0.00050423128435177 5.50145092939761e-05 0.00018580058735287
14 0.024 0.25093214004874 0.250238306037392 1.00018040080262 0.999819399187298 1.57036513627856 1.57091183512237 1.56984239603644 1.57125847777549 -1.5709766088048 -1.57061575640899 0.000169496294800861 -0.000662696180567743 7.23017618654089e-05 0.000244195171776534
15 0.026 0.251197384271681 0.250306230644415 1.00023180051036 0.999768007319777 1.57024249348038 1.57094467725243 1.56957081330007 1.5713898906728 -1.57102792841521 -1.57056438507031 0.000217839420297711 -0.000851277523241454 9.28730871779383e-05 0.000313689626812957
16 0.028 0.251508661208166 0.250386009127344 1.00029215864445 0.999707695798416 1.57009859757347 1.57098320390151 1.56925201812088 1.57154405572967 -1.57108816581923 -1.5705041045026 0.000274637298630594 -0.0010725917297323 0.000117013120891842 0.000395249197883043
17 0.03 0.251869646168614 0.250478616872607 1.00036220725132 0.999637752170651 1.56993176554023 1.57102786221273 1.56888220583562 1.57172276553403 -1.57115803804603 -1.57043420611487 0.000340593587825559 -0.00132925436411946 0.000145006167898724 0.000489839144531641
18 0.032 0.252284012105614 0.250585038074371 1.00044268337735 0.999557464346465 1.56974031997957 1.57107909683867 1.56845756275503 1.57192780370559 -1.5712382633105 -1.57035398266535 0.000416420822772189 -0.00162387999348339 0.000177136146195836 0.000598424744928135
19 0.034 0.252755429254375 0.250706267118671 1.00053432985264 0.999466120654551 1.56952258999442 1.57113734954332 1.56797426473065 1.57216094348961 -1.57132956120555 -1.57026272847384 0.000502841812073582 -0.00195908203141728 0.000213686525014057 0.00072197130036424
20 0.036 0.253287564751547 0.250843310069524 1.00063789612751 0.999363009902274 1.56927691214216 1.57120305877169 1.56742847561208 1.57242394624786 -1.57143265290722 -1.5701597396497 0.000600591136810968 -0.00233747256989253 0.000254940254750321 0.000861444140564823
21 0.038 0.253884082234046 0.25099718625673 1.00075413915643 0.999247421439378 1.56900163144327 1.57127665918684 1.56681634559378 1.57271855984787 -1.571548261389 -1.57004431433571 0.000710416750429909 -0.00276166219960709 0.000301179684129656 0.0010178086300883
22 0.04 0.254548641419916 0.251168929965533 1.00088382432053 0.999118645225347 1.56869510244007 1.57135858117314 1.56613400945109 1.57304651695034 -1.57167711163798 -1.56991575296774 0.000833081678402873 -0.00323425981877845 0.000352686456771557 0.0011920301760154
23 0.042 0.255284897673769 0.251359592228325 1.00102772637452 0.998975971900352 1.56835569029184 1.57144925030474 1.56537758466548 1.57340953319513 -1.57181993086087 -1.5697733585504 0.00096936581556545 -0.00375787243033101 0.000409741374578847 0.00138507423714958
24 0.044 0.256096501559966 0.251570242718595 1.00118663039675 0.998818692859658 1.56798177188531 1.5715490867781 1.56454316943985 1.57380930528595 -1.57197744866114 -1.56961643694885 0.00112006781800965 -0.00433510492741253 0.000472624208638559 0.00159790633497738
25 0.046 0.25698709838616 0.251801971747353 1.00136133272898 0.998646100331404 1.56757173694767 1.57165850480715 1.5636268406016 1.57424750897407 -1.57215039717532 -1.56944429719675 0.00128600708927412 -0.0049685598671558 0.000541613444858038 0.00183149206666271
26 0.048 0.257960327706088 0.252055499984317 1.00155264235986 0.998457778919316 1.56712398963253 1.57177772745776 1.56262465129037 1.57472505784035 -1.57233951158172 -1.56925654240594 0.00146802596391654 -0.00565976745880769 0.000616986357907511 0.00208640259738799
27 0.05 0.25901982283555 0.252330161960637 1.00176138210273 0.998254355835669 1.56663694990973 1.57190631321648 1.56153262858032 1.57524020644808 -1.57254553040044 -1.56905381705993 0.00166699193133438 -0.00640643167306516 0.000699018857582903 0.00236179878779658
28 0.052 0.260169210372693 0.252625171204899 1.0019883896871 0.998036551188815 1.5661090548831 1.57204376048817 1.56034677099537 1.57579097026807 -1.57276919568873 -1.56883685873587 0.00188379993879461 -0.00720591555188081 0.000787985203963878 0.00265671598977199
29 0.054 0.261412109710082 0.252939742373786 1.00223451898233 0.997805085101871 1.5655387602637 1.57218956708213 1.55906304586521 1.57637536373045 -1.57301125333204 -1.56860640519761 0.00211937482346646 -0.00805558200416776 0.000884157781179529 0.00297018961259649
30 0.056 0.262752132550084 0.253273089233422 1.00250064125313 0.997560677628197 1.56492454189639 1.57234323076536 1.55767738653966 1.57699140228548 -1.57327245334267 -1.56836319408827 0.0023746738510965 -0.00895279403244094 0.000987806843381478 0.0033012551216505
31 0.058 0.264192882428002 0.253624422740584 1.00278764644405 0.997304048671724 1.56426489733812 1.57250424979362 1.55618568945554 1.57763710435995 -1.57355355016504 -1.56810796263798 0.00265068936227716 -0.00989491494798889 0.00109920022985152 0.00364894803594106
32 0.06 0.265737954247884 0.253992949223688 1.00309644448937 0.997035917912167 1.56355834748601 1.57267212342084 1.55458381105016 1.5783104932092 -1.57385530298695 -1.56784144738653 0.00294845152742228 -0.0108793085746444 0.00121860304593726 0.00401230392437078
33 0.062 0.267390933836477 0.254377868663495 1.00342796664498 0.996757004735117 1.56280343825317 1.57284635238723 1.55286756451418 1.57900959866477 -1.57417847605577 -1.56756438392099 0.00326903121175137 -0.0119033394412278 0.00134627730627171 0.00439035840069514
34 0.064 0.269155397521335 0.25477837307352 1.00378316683865 0.996468028167002 1.5619987422898 1.5730264393861 1.55103271637648 1.57973245877761 -1.57452383899889 -1.56727750662821 0.00361354295180039 -0.0129643729627431 0.00148248153649196 0.00478214711714979
35 0.066 0.271034911739794 0.25519364498011 1.00416302303465 0.996169706814893 1.5611428607472 1.57321188950975 1.54907498291238 1.58047712135703 -1.57489216714748 -1.56698154846202 0.00398314804522704 -0.0140597756104065 0.00162747032942876 0.00518670575676088
36 0.068 0.273033032686143 0.25562285600223 1.00456853860907 0.995862758811123 1.56023442508162 1.57340221067413 1.54699002636592 1.58124164540536 -1.57528424186254 -1.56667724072532 0.0043790577559646 -0.0151869150705921 0.00178149385149385 0.00560307002438021
37 0.07 0.275153306005132 0.256065165530977 1.00500074373146 0.995547901762665 1.5592720988951 1.57359691402226 1.54477345097585 1.58202410244853 -1.57570085086258 -1.56636531286683 0.00480253663710795 -0.0163431603927744 0.00194479729474488 0.00603027563651297
38 0.0720000000000001 0.277399266540752 0.256519719508883 1.00546069674887 0.995225852705231 1.55825457980963 1.57379551430601 1.5424207987938 1.58282257776265 -1.57614278855189 -1.56604649229253 0.00525490597429168 -0.0175258821265462 0.00211762026986112 0.00646735831002896
39 0.0740000000000001 0.279774438150143 0.256985649309076 1.00594948556802 0.994897328062009 1.55718060137111 1.57399753024604 1.53992754528202 1.5836351714967 -1.5766108563487 -1.56572150419184 0.00573754735275206 -0.0187324524477844 0.00230019613501494 0.00691335374986928
40 0.0760000000000001 0.282282333593441 0.257462070714391 1.00646822903136 0.994563043606989 1.55604893497889 1.57420248486925 1.53728909467663 1.58445999969163 -1.57710586301241 -1.56539107137852 0.00625190635175666 -0.0199602452740281 0.00249275125537641 0.00736729763587812
41 0.0780000000000001 0.28492645451149 0.257948082996526 1.00701807828284 0.994223714432794 1.5548583918365 1.57440990582331 1.53450077510092 1.58529519519592 -1.57762862496925 -1.56505591414624 0.00679949637064798 -0.0212066363691233 0.00269550418774032 0.00782822560890514
42 0.0800000000000001 0.287710291504475 0.258442768095387 1.00760021811934 0.993880054922939 1.55360782491869 1.57461932566765 1.53155783341149 1.58613890847775 -1.57817996663587 -1.56471675013891 0.00738190259138794 -0.0224690034371797 0.00290866478451633 0.00829517325633661
43 0.0820000000000001 0.290636961340257 0.25894518989871 1.00821579201921 0.993532778728442 1.55229629365924 1.57483028214013 1.5284558144833 1.58698930833416 -1.57876064876227 -1.56437429423587 0.0080007093413499 -0.0237447262058671 0.00313240550072555 0.00876717609722456
44 0.0840000000000001 0.293704335855572 0.259454393622146 1.00886487094147 0.993182598748703 1.55092524192205 1.57504231839865 1.52519573812858 1.58784458249719 -1.5793704003301 -1.56402925845179 0.00865645872516008 -0.0250311864990688 0.00336648940686858 0.00924326956719108
45 0.0860000000000001 0.296908573121487 0.259969405289927 1.00954717080892 0.992830227116568 1.54949689362425 1.57525498323697 1.52178041113848 1.58870293813725 -1.58000861146009 -1.56368235185161 0.00934935295292093 -0.0263257682988902 0.00361054168475044 0.00972248900329144
46 0.0880000000000001 0.300245837642274 0.260489231316283 1.01026240719637 0.9924763751875 1.54801347594706 1.57546783127372 1.51821261851234 1.58956260226394 -1.58067467243228 -1.56333428048042 0.0100796063044685 -0.0276258577970037 0.00386418116996403 0.0102038696290235
47 0.0900000000000001 0.303712301919588 0.261012858187775 1.01101029304587 0.992121753532774 1.54647721672544 1.57568042311382 1.51449512663298 1.5904218220245 -1.58136797317742 -1.56298574730837 0.0108474415190109 -0.0289288434352961 0.00412702031074811 0.010686446539673
48 0.0920000000000001 0.307304147961211 0.261539293116413 1.01179053649422 0.991767044398554 1.54489034191344 1.57589234193789 1.51063068636732 1.59127893145011 -1.58208790279819 -1.56263742514831 0.0116530862970873 -0.0302322171314552 0.00439866516278821 0.0111692921788712
49 0.0940000000000001 0.311017568729452 0.26206826540447 1.01260283881528 0.991412432143538 1.54325507312735 1.57610347297143 1.50662203609744 1.59213348235848 -1.58283384912085 -1.56228949602713 0.0124967699139056 -0.0315352999553912 0.00467871542248941 0.0116521558609447
50 0.0960000000000001 0.31484876952446 0.262599775628729 1.01344689247894 0.991057916464163 1.54157362526907 1.57631381254385 1.5024719046872 1.59298547524946 -1.583605198278 -1.56194196032547 0.0133787199429329 -0.0328380914940666 0.00496676450076238 0.0121350381449214
51 0.0980000000000001 0.318793969297783 0.26313382436409 1.01432237932795 0.990703497061623 1.5398482042319 1.5765233569802 1.49818301438949 1.59383491061208 -1.58440133432277 -1.5615948184307 0.0142991590884302 -0.0341405913192268 0.00526239963889535 0.0126179395848887
52 0.1 0.322849401891661 0.263670412183494 1.015228968873 0.990349173641918 1.53808100469095 1.57673210260126 1.4937580836989 1.59468178892469 -1.58522163887456 -1.56124807073686 0.0152583021254375 -0.0354427989874131 0.00556520206763711 0.0131008607300459
53 0.102 0.32701131719969 0.26420953965784 1.0161663167061 0.989994945915897 1.53627420798018 1.57694004572354 1.48919983015459 1.59552611065498 -1.58606549079628 -1.56090171764465 0.0162563529455337 -0.0367447140399751 0.00587474721019104 0.0135838021247549
54 0.104 0.331275982244604 0.26475120735591 1.01713406303155 0.989640813599312 1.53442998005796 1.57714718265939 1.48451097309827 1.59636787626012 -1.58693226590272 -1.56055575956143 0.0172935017065123 -0.0380463360030837 0.00619060492941906 0.0140667643085924
55 0.106 0.335639682169149 0.26529541584429 1.01813183131323 0.989286776412861 1.53255046956309 1.57735350971706 1.47969423639167 1.59720708618682 -1.58782133669963 -1.56021019690123 0.0183699220839392 -0.0393476643877437 0.00651233981917903 0.0145497478164011
56 0.108 0.340098721136147 0.265842165687293 1.01915922703648 0.988932834082236 1.53063780596284 1.57755902320072 1.47475235109838 1.59804374087143 -1.58873207215267 -1.55986503008467 0.0194857686223861 -0.0406486986898065 0.00683951153936941 0.0150327531783412
57 0.11 0.34464942313408 0.266391457446878 1.0202158365824 0.988578986338176 1.52869409779455 1.57776371941057 1.46968805813435 1.59887784074 -1.58966383748541 -1.55952025953902 0.0206411741839657 -0.0419494383899835 0.00717167519393315 0.0155157809199423
58 0.112 0.349288132684715 0.26694329168258 1.02130122621178 0.988225232916509 1.52672143100214 1.57796759464288 1.46450411089169 1.59970938620838 -1.59061599400533 -1.55917588569813 0.0218362474916401 -0.0432498829538583 0.0075083817507786 0.0159988315621542
59 0.114 0.354011215449523 0.267497668951425 1.02241494115569 0.987871573558206 1.5247218673686 1.57817064519004 1.45920327784012 1.60053837768231 -1.59158789895642 -1.55883190900246 0.0230710707646193 -0.0445500318319001 0.00784917850230876 0.0164819056213988
60 0.116 0.358815058731886 0.268054589807858 1.02355650480918 0.987518008009427 1.52269744304558 1.57837286734064 1.45378834511041 1.60136481555748 -1.59257890539705 -1.55848832989906 0.0243456974430299 -0.0458498844594769 0.00819360956501266 0.0169650036096216
61 0.118 0.363696071872331 0.268614054803667 1.02472541802433 0.987164536021568 1.52065016718065 1.57857425737952 1.44826211906423 1.60218870021964 -1.59358836210158 -1.55814514884153 0.0256601499989021 -0.0471494402568679 0.008541216416363 0.0174481260343425
62 0.12 0.368650686534288 0.269176064487903 1.02592115849861 0.986811157351316 1.51858202064295 1.57877481158786 1.44262742885442 1.60301003204465 -1.59461561348388 -1.55780236629004 0.0270144178304039 -0.0484486986292776 0.00889153846708243 0.017931273398708
63 0.122 0.373675356878174 0.26974061940681 1.0271431802541 0.986457871760693 1.51649495484737 1.57897452624321 1.43688712898005 1.60382881139859 -1.59565999954108 -1.55745998271133 0.028408455236147 -0.0497476589668481 0.0092441136666864 0.0184144462015419
64 0.124 0.378766559621848 0.270307720103742 1.02839091320318 0.986104679017106 1.5143908906776 1.57917339761955 1.43104410184024 1.60464503863785 -1.59672085581554 -1.55711799857864 0.029842179466293 -0.0510463206446732 0.0095984791400826 0.0188976449373969
65 0.126 0.383920793985801 0.270877367119095 1.02966376279578 0.985751578893398 1.51227171750777 1.5793714219874 1.42510126029066 1.60545871410915 -1.5977975133731 -1.55677641437178 0.0313154688471123 -0.0523446830228112 0.00995417185290487 0.019380870096606
66 0.128 0.389132439035416 0.271449560990227 1.0309605766285 0.9853985711679 1.51014016859368 1.57956859561384 1.41906403208699 1.6062698381497 -1.59888885015124 -1.55643523057704 0.0328275393694689 -0.0536427454462986 0.0103105827840801 0.0198641221653337
67 0.13 0.394393098808599 0.272024302251384 1.03227945999131 0.985045655624473 1.5080000631315 1.57976491476258 1.41294118320728 1.60707841108723 -1.59999314805991 -1.55609444768725 0.0343767034910838 -0.0549405072451638 0.0106669203107345 0.0203474016256274
68 0.132 0.399694836020666 0.272601591433626 1.033618566465 0.984692832052567 1.5058549654811 1.57996037569404 1.40674111753033 1.60788443324009 -1.60110876649478 -1.55575406620173 0.0359612723489954 -0.0562379677344403 0.0110224379770385 0.0208307089554687
69 0.134 0.405030176915752 0.273181429064756 1.03497610371369 0.984340100247267 1.50370818616009 1.5801549746654 1.40047186364808 1.6086879049173 -1.60223414483986 -1.55541408662628 0.0375795633954864 -0.0575351262141809 0.011376435455188 0.0213140446288245
70 0.136 0.410392110969218 0.273763815669239 1.03635033828429 0.983987460009341 1.50156278538738 1.58034870793068 1.39414106653408 1.60948882641869 -1.60336780395946 -1.5550745094732 0.0392299073945067 -0.0588319819694711 0.0117282589581785 0.0217974091156985
71 0.138 0.415774086150845 0.274348751768133 1.03773959945933 0.983634911145294 1.49942157876802 1.58054157174079 1.38775598354351 1.61028719803492 -1.60450834678907 -1.55473533526125 0.0409106547468421 -0.0601285342704432 0.0120773011659201 0.0222808028821822
72 0.14 0.421170000430154 0.274936237879016 1.03914228222015 0.983282453467419 1.49728714473416 1.58073356234361 1.38132348422386 1.61108302004757 -1.60565445813446 -1.55439656451566 0.0426201811283066 -0.0614247823722904 0.0124230007266122 0.0227642263905066
73 0.142 0.42657419016316 0.275526274515908 1.04055684938462 0.982930086793845 1.49516183338634 1.58092467598404 1.37485005343265 1.61187629272925 -1.60680490378529 -1.55405819776811 0.0443568924387481 -0.0627207255152808 0.0127648413940003 0.0232476800990929
74 0.144 0.43198141594933 0.276118862189203 1.04198183298805 0.982577810948587 1.49304777641304 1.58111490890407 1.36834179728575 1.61266701634365 -1.60795852904412 -1.55372023555674 0.0461192290709096 -0.0640163629247713 0.0131023508586034 0.0237311644626041
75 0.146 0.437386846492176 0.276714001405596 1.04341583497793 0.982225625761601 1.49094689780066 1.58130425734287 1.36180445149229 1.61345519114562 -1.60911425676545 -1.55338267842611 0.0479056695173839 -0.0653116938112225 0.0134350993275664 0.024214679931996
76 0.148 0.442786040939981 0.277311692668004 1.04485752729382 0.981873531068833 1.4888609250818 1.58149271753681 1.35524339166883 1.61424081738124 -1.61027108499168 -1.55304552692725 0.0497147333412469 -0.0666067173702129 0.0137626979037592 0.0246982269545687
77 0.15 0.448174930126541 0.277911936475503 1.04630565140208 0.981521526712269 1.48679140090333 1.58168028571956 1.34866364526346 1.61502389528794 -1.61142808426523 -1.55270878161758 0.0515449835416281 -0.0679014327824531 0.0140847968103465 0.0251818059740175
78 0.152 0.453549797077296 0.278514733323249 1.04775901735317 0.981169612539986 1.48473969472809 1.58186695812217 1.34206990475832 1.61580442509453 -1.61258439468812 -1.55237244306095 0.0533950283496603 -0.0691958392138011 0.0144010835024751 0.0256654174304842
79 0.154 0.458907257094704 0.27912008370241 1.04921650242608 0.980817788406207 1.48270701451423 1.5820527309731 1.33546654185659 1.61658240702127 -1.61373922279214 -1.55203651182763 0.0552635224931243 -0.0704899358152766 0.0147112807031349 0.0261490617606084
80 0.156 0.464244237688956 0.279727988100092 1.05067704942034 0.98046605417135 1.48069441824316 1.58223760049831 1.32885762239553 1.61735784128 -1.61489183827549 -1.55170098849429 0.0571491679698173 -0.0717837217230759 0.0150151443957416 0.0266327393975787
81 0.158 0.469557958576464 0.280338446999268 1.05213966465222 0.980114409702077 1.47870282519217 1.58242156292131 1.32224692176043 1.61813072807417 -1.61604157065429 -1.551365873644 0.0590507143704104 -0.0730771960585872 0.0153124618016734 0.0271164507711838
82 0.16 0.474845911929095 0.280951460878711 1.05360341570695 0.979762854871352 1.47673302686921 1.58260461446327 1.3156379406061 1.61890106759892 -1.61718780587073 -1.55103116786622 0.0609669587914467 -0.0743703579284058 0.0156030493669124 0.0276001963078635
83 0.162 0.480105843021937 0.281567030212918 1.05506742899422 0.979411389558486 1.47478569754699 1.58278675134304 1.30903392072057 1.61966886004119 -1.61832998289332 -1.5506968717568 0.0628967453783252 -0.075663206424349 0.0158867507781568 0.0280839764307602
84 0.164 0.485335731396195 0.282185155472041 1.05653088714955 0.979060013649194 1.47286140434986 1.58296796977723 1.30243786089249 1.62043410557973 -1.61946759033905 -1.55036298591798 0.0648389645367334 -0.0769557406234719 0.0161634350252857 0.02856779155977
85 0.166 0.490533772626531 0.28280583712182 1.05799302631962 0.978708727035644 1.47096061686153 1.58314826598031 1.29585253266698 1.62119680438525 -1.62060016314195 -1.55002951095837 0.0667925518491565 -0.0782479595880829 0.0164329945239143 0.0290516421115937
86 0.168 0.495698360758408 0.283429075623506 1.05945313336497 0.978357529616511 1.4690837162338 1.58332763616464 1.28928049589621 1.62195695662045 -1.62172727928815 -1.54969644749294 0.0687564867308961 -0.0795398623657591 0.0166953433089443 0.0295355284997882
87 0.17 0.50082807146055 0.284054871433801 1.06091054300935 0.978006421297028 1.46723100378656 1.58350607654057 1.2827241140101 1.62271456244007 -1.62284855663301 -1.54936379614306 0.0707297908575757 -0.0808314479893627 0.016950415307515 0.0300194511348173
88 0.172 0.505921645920092 0.284683225004777 1.06236463496105 0.977655401989038 1.4654027090981 1.58368358331648 1.27618556894938 1.62346962199104 -1.62396364981244 -1.54903155753642 0.0727115263934614 -0.0821227154770566 0.0171981626975632 0.0305034104241034
89 0.174 0.510977975493128 0.285314136783819 1.06381483102725 0.977304471611047 1.46359899759148 1.58386015269888 1.26966687571855 1.62422213541247 -1.62507224725731 -1.5486997323071 0.0747007940471486 -0.0834136638323206 0.0174385543562951 0.030987406772078
90 0.176 0.515996087110802 0.285947607213544 1.06526059223957 0.976953630088275 1.46181997762848 1.58403578089245 1.26316989652938 1.62497210283579 -1.62617406831665 -1.54836832109552 0.0766967309783177 -0.0847042920439679 0.0176715744012447 0.0314714405802334
91 0.178 0.520975129430561 0.286583636731742 1.06670141600493 0.976602877352713 1.46006570712712 1.58421046410015 1.25669635451767 1.62571952438478 -1.62726886049336 -1.54803732454846 0.0786985085763708 -0.0859945990861612 0.0178972208252095 0.0319555122471737
92 0.18 0.525914359713424 0.287222225771302 1.06813683329348 0.976252213343167 1.4583361997222 1.58438419852324 1.25024784702624 1.62646440017566 -1.62835639679346 -1.54770674331902 0.0807053301288722 -0.0872845839184297 0.018115504225208 0.0324396221686657
93 0.182 0.530813131400832 0.287863374760144 1.06956640587183 0.97590163800532 1.45663143049105 1.5845569803614 1.24382585845659 1.62720673031715 -1.62943647318829 -1.54737657806668 0.0827164283948316 -0.0885742454856857 0.0183264466246588 0.0329237707376901
94 0.184 0.535670882358609 0.288507084121155 1.07098972358797 0.975551151291778 1.45495134126864 1.58472880581277 1.23743177269962 1.62794651491056 -1.63050890618749 -1.54704682945723 0.084731063095021 -0.0898635827182415 0.0185300803872241 0.0334079583444932
95 0.186 0.540487123750597 0.289153354272115 1.07240640171113 0.975200753162125 1.45329584557758 1.58489967107404 1.2310668851637 1.62868375404986 -1.6315735305189 -1.54671749816281 0.0867485183286836 -0.0911525945318267 0.0187264472201739 0.033892185376637
96 0.188 0.54526142950029 0.289802185625634 1.07381607832826 0.974850443582977 1.45166483319964 1.58506957234051 1.22473241442463 1.62941844782171 -1.63263019691059 -1.54638858486189 0.0887680999231974 -0.0924412798276051 0.0189155972646791 0.0343764522190514
97 0.19 0.549993426295309 0.290453578589085 1.07521841179622 0.974500222528032 1.45005817441603 1.58523850580615 1.21842951352881 1.6301505963056 -1.63367876996873 -1.54606009023927 0.0907891327204559 -0.0937296374921925 0.0190975882701343 0.0348607592540846
98 0.192 0.55468278408642 0.291107533564534 1.07661307824739 0.974150089978124 1.44847572394389 1.58540646766371 1.21215928098644 1.63088019957388 -1.63471912614449 -1.54573201498608 0.0928109578009326 -0.0950176663976742 0.0192724848494072 0.0353451068615543
99 0.194 0.559329207029992 0.291764050948672 1.07799976914393 0.973800045921278 1.4469173245969 1.58557345410477 1.2059227714976 1.6316072576918 -1.63575115178179 -1.54540435979976 0.0948329296435486 -0.0963053654016227 0.0194403578118137 0.0358294954187993
100 0.196 0.563932424820101 0.292423131132757 1.0793781888748 0.973450090352759 1.44538281069794 1.5857394613198 1.19972100645986 1.63233177071767 -1.63677474123723 -1.54507712538411 0.096854413216551 -0.0975927333471159 0.0196012835706063 0.03631392530073
101 0.198 0.56849218435373 0.293084774502535 1.08074805238733 0.973100223275128 1.44387201127166 1.58590448549825 1.19355498431187 1.63305373870282 -1.63778979506226 -1.54475031244922 0.0988747809915702 -0.0988797690627548 0.0197553436218292 0.0367983968798798
102 0.2 0.573008241669545 0.293748981438185 1.08210908284378 0.972750444698293 1.4423847530452 1.58606852282864 1.18742569077398 1.63377316169178 -1.6387962182374 -1.5444239217115 0.10089340986981 -0.100166471362683 0.0199026240915238 0.0372829105264564
103 0.202 0.57748035409739 0.294415752314247 1.08346100929107 0.972400754639564 1.44092086328537 1.58623156949858 1.18133410905379 1.63449003972224 -1.63979391844655 -1.54409795389372 0.102909678005867 -0.101452839046602 0.0200432153484704 0.0377674666083925
104 0.204 0.581908272551671 0.295085087499557 1.08480356433026 0.972051153123704 1.43948017250095 1.5863936216949 1.17528123009259 1.63520437282521 -1.6407828043792 -1.54377240972491 0.104922961510877 -0.102738870899796 0.0201772116799003 0.038252065491397
105 0.206 0.586291733897091 0.295756987357185 1.08613648176994 0.971701640182982 1.43806251703955 1.5865546756037 1.16926806293759 1.63591616102504 -1.64176278404674 -1.54344728994046 0.106932631012464 -0.104024565693144 0.0203047110279236 0.0387367075390062
106 0.208 0.590630453309381 0.296431452244367 1.08745949424521 0.971352215857228 1.43666774160949 1.58671472741044 1.16329564533564 1.6366254043395 -1.64273376309773 -1.54312259528206 0.108938048044185 -0.105309922183144 0.0204258147847799 0.0392213931126348
107 0.21 0.594924116546526 0.297108482512437 1.08877233078131 0.971002880193886 1.43529570175815 1.58687377329997 1.15736505465657 1.63733210277985 -1.64369564311545 -1.54279832649772 0.110938561231623 -0.106594939111928 0.020540627645439 0.0397061225716272
108 0.212 0.59917237203715 0.297788078506771 1.09007471427752 0.970653633248063 1.43394626634078 1.58703180945667 1.15147741926967 1.63803625635091 -1.6446483198792 -1.54247448434176 0.112933502235891 -0.107879615207285 0.0206492575165592 0.0401908962733081
109 0.214 0.603374822681679 0.298470240566714 1.09136635888301 0.970304475082586 1.43261932001573 1.58718883206446 1.14563393051492 1.63873786505112 -1.6455916815681 -1.54215106957482 0.114922181407675 -0.10916394918268 0.0207518154813593 0.0406757145730338
110 0.216 0.607531017248159 0.299154969025521 1.09264696723191 0.969955405768056 1.43131476580591 1.58734483730694 1.13983585543318 1.63943692887261 -1.64652560688365 -1.54182808296385 0.116903883095872 -0.110447939737272 0.0208484158205918 0.0411605778242434
111 0.218 0.611640441227448 0.29984226421029 1.09391622749866 0.969606425382896 1.43003252777044 1.58749982136741 1.13408455044681 1.64013344780127 -1.64744996306321 -1.54150552528214 0.118877860543898 -0.111731585555937 0.0209391760905339 0.0416454863785097
112 0.22 0.615702506990877 0.3005321264419 1.09517381022828 0.969257534013409 1.42877255383642 1.58765378042898 1.12838147621652 1.64082742181683 -1.64836460375254 -1.54118339730925 0.120843330293354 -0.113014885309286 0.0210242172597587 0.04213044058559
113 0.222 0.619716543066404 0.301224556034948 1.0964193648871 0.968908731753829 1.42753481884801 1.58780671067464 1.12272821394221 1.6415188508929 -1.64926936669954 -1.54086169983111 0.122799465998217 -0.114297837653685 0.0211036639074507 0.0426154407934776
114 0.224 0.623681782314903 0.301919553297684 1.09765251606879 0.968560018706372 1.42631932789977 1.58795860828732 1.117126483429 1.64220773499704 -1.65016407122443 -1.54054043363992 0.124745391532273 -0.115580441231278 0.0211776444872216 0.0431004873484523
115 0.226 0.627597348744652 0.302617118531949 1.09887285927698 0.968211394981292 1.42512612003332 1.58810946944998 1.11157816330648 1.64289407409085 -1.65104851541256 -1.54021959953422 0.126680173246775 -0.116862694670006 0.0212462916618221 0.0435855805951317
116 0.228 0.631462242646331 0.303317252033112 1.10007995618832 0.967862860696935 1.42395527239265 1.58825929034571 1.10608531387447 1.64357786813002 -1.65192247296484 -1.53989919831888 0.12860281120284 -0.118144596583632 0.0213097427159108 0.0440707208765224
117 0.23 0.635275323659058 0.304019954090006 1.1012733292778 0.967514415979785 1.42280690495391 1.58840806715775 1.10065020315785 1.6442591170644 -1.65278568962571 -1.53957923080508 0.130512229161623 -0.119426145571755 0.0213681400562343 0.0445559085340702
118 0.232 0.63903529128488 0.304725224984871 1.10245245565926 0.967166060964527 1.42168118597271 1.58855579606963 1.09527533689436 1.64493782083805 -1.65363787909004 -1.53925969781032 0.132407263061863 -0.120707340219838 0.0214216318113319 0.0450411439077118
119 0.234 0.642736496313849 0.305433064993284 1.10361545093439 0.96681779579409 1.42057957825489 1.5887024732652 1.08996946544768 1.64561397938933 -1.6544777729133 -1.53894060015842 0.134284534660412 -0.121988179099229 0.0214703177474029 0.0455264273359255
120 0.236 0.646372093974725 0.306143474384104 1.10476004924951 0.966469620619707 1.41950386936223 1.58884809492874 1.08474313656344 1.64628759265094 -1.65530383140351 -1.53862193867954 0.136139993161554 -0.123268660767179 0.0215143104730273 0.0460117591557821
121 0.238 0.64993532926834 0.306856453419405 1.10588400622119 0.966121535600963 1.41845578486969 1.58899265724502 1.07960686203962 1.64695866055001 -1.65611453450217 -1.53830371421017 0.137969559783451 -0.124548783766869 0.0215537551641745 0.0464971397029957
122 0.24 0.653419530807091 0.30757200235442 1.10698509841652 0.965773540905851 1.41743699292 1.58913615639938 1.07457111972711 1.64762718300816 -1.65690838059529 -1.53798592759311 0.139769129987341 -0.12582854662743 0.021588827953406 0.0469825693119748
123 0.242 0.65681810545678 0.308290121437475 1.10806112300992 0.965425636710822 1.41644910860526 1.58927858857782 1.06964635415541 1.64829315994152 -1.65768388547656 -1.53766857967752 0.141534576296102 -0.127107947863965 0.0216197341763527 0.047468048315873
124 0.244 0.66012453378391 0.309010810909931 1.10910989761547 0.965077823200839 1.41549369817407 1.58941994996707 1.06484297577424 1.64895659126086 -1.65843958146359 -1.53735167131887 0.143261751708139 -0.128386985977575 0.0216467064714335 0.0479535770466399
125 0.246 0.663332366311344 0.309734071006122 1.11012926029438 0.96473010056943 1.41457228306306 1.58956023675469 1.06017135880129 1.64961747687163 -1.65917401666846 -1.53703520337899 0.144946493713076 -0.129665659455379 0.0216700027291523 0.0484391558350722
126 0.248 0.666435220584072 0.310459901953295 1.11111706973783 0.964382469018738 1.41368634375261 1.58969944512909 1.05564183766743 1.65027581667399 -1.65988575442362 -1.53671917672604 0.146584628915491 -0.130943966770539 0.021689903887829 0.048924785010864
127 0.25 0.669426779044936 0.31118830397155 1.1120712056256 0.964034928759578 1.41283732344721 1.58983757127968 1.05126470205371 1.65093161056293 -1.6605733728641 -1.53640359223453 0.148171978271759 -0.132221906382283 0.0217067115733034 0.0494104649026581
128 0.252 0.67230080954945 0.311919277273779 1.11298957599929 0.963687480011482 1.41202662518981 1.58997461139693 1.04705015855001 1.65158485842826 -1.66123546948518 -1.53608845078532 0.14970437454984 -0.13349947673593 0.0217207455592956 0.0498961958380963
129 0.254 0.675054918669169 0.312652822065607 1.11387129484519 0.963340123002759 1.41125452047699 1.59011056167242 1.04300281446194 1.65223556015477 -1.66187148961923 -1.53577375326561 0.151179673697358 -0.134776676262912 0.0217323335474792 0.0503819781438705
130 0.256 0.677689677898528 0.313388938545334 1.11471641371178 0.962992857970542 1.41052042673693 1.59024541829896 1.03912289958477 1.65288371562221 -1.66248153408414 -1.53545950056896 0.152597336038527 -0.1360535033808 0.0217417933709644 0.0508678121457733
131 0.258 0.680205902287652 0.31412762690387 1.11552507078587 0.962645685160841 1.40982371167993 1.59037917747063 1.03541023116908 1.65352932470537 -1.66306575878394 -1.53514569359531 0.153956995337513 -0.137329956493328 0.021749428991169 0.0513536981687488
132 0.26 0.682604636308303 0.314868887324684 1.11629748610458 0.962298604828597 1.409163698156 1.59051183538291 1.03186423250805 1.65417238727418 -1.66362437149318 -1.53483233325094 0.155258452986939 -0.13860603399042 0.0217555293641079 0.051839636536943
133 0.262 0.6848871405047 0.315612719983738 1.11703395696748 0.961951617237731 1.40853966853826 1.59064338823272 1.02848395102939 1.65481290319372 -1.66415762881832 -1.53451942044849 0.156501672096117 -0.139881734248211 0.021760367528145 0.0523256275737547
134 0.264 0.687054878865238 0.316359125049433 1.11773485354077 0.961604722661196 1.40795086867556 1.59077383221852 1.02526807592404 1.65545087232433 -1.66466583332293 -1.534206956107 0.157686771493156 -0.141157055629075 0.0217641998988518 0.0528116716018859
135 0.266 0.689109506857087 0.317108102682548 1.11840061464581 0.961257921381031 1.40739651145443 1.59090316354039 1.02221495533837 1.65608629452163 -1.66514933080505 -1.53389494115187 0.158814019655678 -0.142431996481649 0.0217672657566141 0.0532977689433926
136 0.268 0.69105286007145 0.317859653036183 1.11903174372432 0.960911213688412 1.40687578000731 1.59103137840012 1.01932261315163 1.6567191696366 -1.66560850771546 -1.53358337651488 0.159883828585304 -0.143706555140862 0.0217697869126982 0.0537839199197351
137 0.27 0.692886943432767 0.3186137762557 1.11962880497315 0.9605645998837 1.40638783060117 1.59115847300127 1.01658876535531 1.65734949751566 -1.66604378870713 -1.53327226313419 0.160896747641634 -0.144980729927958 0.0217719675396166 0.0542701248518287
138 0.272 0.694613920930365 0.319370472478667 1.12019241964189 0.960218080276496 1.40593179523737 1.59128444354927 1.01401083604683 1.65797727800068 -1.66645563430673 -1.53296160195437 0.161853457351795 -0.146254519150522 0.0217739941518242 0.0547563840600941
139 0.274 0.696236105835983 0.320129741834796 1.12072326248695 0.95987165518569 1.40550678399123 1.5914092862515 1.01158597304523 1.6586025109291 -1.66684453870013 -1.53265139392637 0.162754763212052 -0.147527921102509 0.0217760357230159 0.0552426978645079
140 0.276 0.697755951375101 0.320891584445894 1.12122205837642 0.959525324939513 1.40511188711695 1.59153299731737 1.00931106313328 1.65922519613393 -1.66721102762474 -1.53234164000754 0.163601589498198 -0.14880093406427 0.0217782439265824 0.0557290665846529
141 0.278 0.699176041824194 0.321656000425796 1.1216895790402 0.959179089875588 1.40474617694125 1.59165557295841 1.00718274692639 1.65984533344388 -1.66755565636225 -1.53203234116164 0.164394973101665 -0.150073556302579 0.0217807534861179 0.0562154905397685
142 0.28 0.700499084009816 0.322422989880316 1.12212663996054 0.958832950340979 1.40440870956698 1.59177700938833 1.00519743336615 1.66046292268334 -1.66787900782608 -1.53172349835885 0.165136057408306 -0.151345786070659 0.0217836826232383 0.0567019700488009
143 0.282 0.701727899188819 0.323192552907185 1.12253409739859 0.958486906692245 1.40409852640559 1.59189730282316 1.0033513138334 1.66107796367251 -1.66818169073876 -1.53141511257575 0.165826086236788 -0.15261762160821 0.0217871335903862 0.0571885054304539
144 0.284 0.702865415292041 0.323964689595999 1.12291284555272 0.958140959295485 1.40381465555585 1.59201644948126 1.00164037587392 1.66169045622742 -1.66846433789473 -1.53110718479536 0.166466397853349 -0.153889061141441 0.0217911932767349 0.0576750970032382
145 0.286 0.703914659516474 0.324739400028158 1.12326381384506 0.957795108526396 1.40355611304421 1.59213444558344 1.00006041652778 1.66230040016 -1.66872760450488 -1.53079971600712 0.167058419079344 -0.155160102883092 0.0217959338757838 0.0581617450855226
146 0.288 0.704878751253193 0.325516684276815 1.12358796433277 0.957449354770314 1.40332190394086 1.59225128735308 0.998607055252488 1.66290779527813 -1.66897216661964 -1.5304927072069 0.167603659507635 -0.156430745032465 0.0218014136037348 0.0586484499955835
147 0.29 0.705760915577555 0.326296542406816 1.12388618284817 0.957103698422271 1.40311081459325 1.59236697101614 0.997275755681831 1.66351264138571 -1.66919854164349 -1.53018615939702 0.168103687680765 -0.157700985775455 0.0218075720469102 0.059135212051655
148 0.292 0.706564561572463 0.327078974474646 1.12415883183593 0.956758139887043 1.40292053773514 1.5924814928013 0.996061876400101 1.66411493828273 -1.66940634032113 -1.52988007358625 0.168560049436762 -0.158970823284575 0.0218137901125297 0.0596220315719796
149 0.294 0.707293148791385 0.327863980528374 1.12440641878883 0.956412679579197 1.40274898596643 1.59259484894003 0.99496062434672 1.66471468576528 -1.66959538456491 -1.5295744507898 0.168974376736195 -0.160240255718988 0.0218195552112768 0.0601089088748571
150 0.296 0.707950166012334 0.328651560607598 1.12462967417806 0.956067317923144 1.4025944533599 1.59270703566668 0.99396705898098 1.66531188362568 -1.66976584321932 -1.52926929202935 0.169348396413619 -0.161509281224534 0.0218245415369336 0.0605958442786957
151 0.298 0.708539132867538 0.329441714743389 1.12482951105172 0.955722055353186 1.40245554382415 1.59281804921854 0.993076106285733 1.66590653165247 -1.66991816912845 -1.52896459833304 0.169683918845492 -0.162777897933763 0.021828572963982 0.061082838102061
152 0.3 0.709063601048548 0.330234442958236 1.12500698884725 0.955376892313565 1.40233110622867 1.59292788583597 0.992282571967934 1.6664986296305 -1.67005304212536 -1.52866037073551 0.169982827411263 -0.164046103965962 0.0218315899641012 0.0615698906637263
153 0.302 0.709527155063088 0.331029745265994 1.12516328141069 0.955031829258514 1.40222017658937 1.59303654176244 0.99158115384138 1.66708817734099 -1.67017131818006 -1.52835661027784 0.170247068779264 -0.165313897427187 0.0218336205413285 0.0620570022827223
154 0.304 0.709933412552451 0.331827621671827 1.12529964907496 0.954686866652304 1.40212192729088 1.59314401324465 0.990966453390331 1.66767517456159 -1.67027398467105 -1.52805331800762 0.170478644022542 -0.166581276410293 0.0218347550442238 0.0625441732783867
155 0.306 0.710286024196073 0.332628072172154 1.12541741457677 0.954342004969292 1.4020356231342 1.5932502965326 0.990432986520877 1.6682596210664 -1.67036212158804 -1.52775049497894 0.170679600553607 -0.167848238994966 0.0218351246401672 0.063031403970414
156 0.308 0.710588673238204 0.333431096754597 1.12551794256296 0.953997244693971 1.4019605839001 1.59335538787968 0.989975193511789 1.66884151662608 -1.67043686839195 -1.52744814225239 0.170852024857835 -0.16911478324775 0.0218348832072312 0.0635186946789048
157 0.31 0.710845074674242 0.334236695397927 1.12560262243324 0.953652586321016 1.40189615307419 1.59345928354276 0.989587448179387 1.66942086100786 -1.67049939622162 -1.52714626089506 0.170998036000298 -0.170380907222085 0.0218341923946644 0.0640060457244159
158 0.312 0.711058974134028 0.335044868072007 1.12567285427472 0.953308030355334 1.40184167236362 1.59356197978227 0.989264066272617 1.66999765397563 -1.67055088512486 -1.52684485198055 0.171119779878176 -0.171646608958332 0.0218332096110777 0.0644934574280089
159 0.314 0.711234146497942 0.335855614737744 1.12573003765657 0.95296357731211 1.40179646163219 1.5936634728623 0.988999313115664 1.67057189528999 -1.67059250598918 -1.52654391658902 0.171219424189395 -0.172911886483809 0.0218320787114413 0.0649809301113006
160 0.316 0.711374394280274 0.336668935347032 1.12577556306379 0.952619227716857 1.40175980387856 1.59376375905067 0.988787410516486 1.67114358470826 -1.67062540684716 -1.52624345580712 0.171299154086923 -0.174176737812823 0.0218309231648644 0.0654684640965115
161 0.318 0.711483545813478 0.337484829842701 1.12581080575691 0.952274982105459 1.40173093487695 1.59386283461903 0.988622542960711 1.67171272198463 -1.67065070322715 -1.52594347072807 0.171361168486807 -0.175441160946701 0.0218298414922057 0.0659560597065153
162 0.32 0.711565453266935 0.338303298158464 1.12583712184677 0.951930841024221 1.4017090370887 1.59396069584294 0.988498863111629 1.6722793068701 -1.67066947221106 -1.52564396245162 0.171407676996329 -0.176705153873823 0.0218289047650134 0.0664437172648883
163 0.322 0.71162399053454 0.339124340218865 1.12585584637196 0.951586805029915 1.40169323743674 1.59405733900198 0.988410496638348 1.67284333911265 -1.67068274984787 -1.52534493208409 0.171440897426766 -0.177968714569655 0.021828155955454 0.0669314370959582
164 0.324 0.711663051026769 0.339947955939224 1.12586829316129 0.951242874689827 1.40168260851534 1.5941527603798 0.988351546395683 1.67340481845719 -1.67069153155464 -1.52504638073836 0.171463053853064 -0.179231840996784 0.0218276109217672 0.0674192195248532
165 0.326 0.711686545404481 0.34077414522559 1.12587575625676 0.950899050581803 1.40167617278701 1.59424695626424 0.988316095980698 1.6739637446457 -1.67069677511968 -1.52474830953388 0.171476375180642 -0.18049453110495 0.0218272608067261 0.0679070648775512
166 0.328 0.711698399293412 0.341602907974683 1.12587951266435 0.950555333294294 1.40167290929865 1.59433992294741 0.988298212692149 1.67452011741722 -1.67069940590607 -1.52445071959667 0.171483094177588 -0.18175678283108 0.021827075618881 0.0683949734809281
167 0.33 0.711702551019825 0.342434244073849 1.12588082619303 0.950211723426402 1.40167176243318 1.59443165672576 0.988291949920128 1.67507393650796 -1.67070032384003 -1.52415361205937 0.171485446928849 -0.183018594099322 0.0218270087591687 0.0688829456628071
168 0.332 0.711702949409042 0.343268153401002 1.12588095213593 0.949868221587929 1.40167165220097 1.59452215390022 0.988291348994029 1.6756252016513 -1.67070041175885 -1.52385698806118 0.171485672667813 -0.184279962821081 0.0218270022495337 0.069370981752007
169 0.334 0.711702949409042 0.344104635824578 1.12588095213593 0.949524828399416 1.40167165220097 1.59461141077621 0.988291348994029 1.67617391257789 -1.67070041175885 -1.52356084874794 0.171485672667813 -0.18554088689505 0.0218270022495337 0.0698590820783912
170 0.336 0.344943691203482 0.949181544492193 1.59469942366383 1.67672006901567 -1.52326519527207 -0.186801364207251 0.0703472469729158
171 0.338 0.345785319387035 0.948838370508422 1.59478618887784 1.67726367068995 -1.52297002879264 -0.188061392631064 0.0708354767676782
172 0.34 0.346629520214928 0.948495307101141 1.59487170273784 1.67780471732343 -1.52267535047535 -0.189320970027268 0.0713237717959655
173 0.342 0.347476293517167 0.948152354934307 1.59495596156831 1.6783432086363 -1.52238116149254 -0.190580094244071 0.0718121323923024
174 0.344 0.348325639114026 0.947809514682845 1.59503896169872 1.67887914434624 -1.52208746302317 -0.191838763117154 0.0723005588924998
175 0.346 0.349177556815994 0.947466787032685 1.59512069946362 1.67941252416852 -1.52179425625291 -0.193096974469698 0.0727890516337023
176 0.348 0.350032046423729 0.947124172680809 1.59520117120271 1.67994334781601 -1.52150154237405 -0.194354726112429 0.0732776109544367
177 0.35 0.350889107728003 0.946781672335295 1.59528037326097 1.68047161499928 -1.5212093225856 -0.19561201584365 0.0737662371946591
178 0.352 0.351748740509659 0.946439286715355 1.5953583019887 1.68099732542658 -1.52091759809321 -0.19686884144928 0.0742549306958032
179 0.354 0.352610944539556 0.946097016551382 1.59543495374166 1.68152047880399 -1.52062637010927 -0.198125200702894 0.0747436918008276
180 0.356 0.353475719578523 0.94575486258499 1.59551032488114 1.68204107483538 -1.52033563985285 -0.199381091365754 0.0752325208542634
181 0.358 0.354343065377309 0.945412825569056 1.59558441177404 1.68255911322251 -1.52004540854973 -0.200636511186854 0.0757214182022613
182 0.36 0.355212981676535 0.945070906267762 1.59565721079299 1.68307459366507 -1.51975567743242 -0.201891457902957 0.0762103841926393
183 0.362 0.356085468206646 0.944729105456634 1.5957287183164 1.68358751586073 -1.51946644774018 -0.203145929238629 0.0766994191749294
184 0.364 0.356960524687859 0.944387423922587 1.59579893072861 1.6840978795052 -1.51917772071898 -0.204399922906287 0.0771885235004247
185 0.366 0.35783815083012 0.944045862463961 1.59586784441992 1.68460568429225 -1.51888949762157 -0.205653436606227 0.0776776975222266
186 0.368 0.358718346333053 0.943704421890561 1.59593545578674 1.6851109299138 -1.51860177970743 -0.206906468026673 0.0781669415952909
187 0.37 0.359601110885912 0.943363103023703 1.59600176123164 1.68561361605995 -1.51831456824285 -0.208159014843814 0.0786562560764751
188 0.372 0.360486444167536 0.943021906696245 1.59606675716345 1.68611374241903 -1.51802786450087 -0.209411074721842 0.0791456413245844
189 0.374 0.361374345846298 0.942680833752633 1.59613043999738 1.68661130867764 -1.51774166976134 -0.210662645312993 0.0796350977004183
190 0.376 0.36226481558006 0.942339885048933 1.59619280615507 1.68710631452072 -1.51745598531088 -0.211913724257591 0.0801246255668166
191 0.378 0.363157853016126 0.941999061452876 1.59625385206475 1.68759875963159 -1.51717081244295 -0.213164309184085 0.0806142252887057
192 0.38 0.364053457791195 0.941658363843892 1.59631357416123 1.688088643692 -1.51688615245782 -0.214414397709093 0.0811038972331446
193 0.382 0.364951629531313 0.941317793113149 1.59637196888611 1.68857596638216 -1.51660200666258 -0.215663987437443 0.08159364176937
194 0.384 0.365852367851828 0.940977350163588 1.59642903268779 1.68906072738083 -1.51631837637116 -0.216913075962212 0.082083459268843
195 0.386 0.366755672357344 0.940637035909964 1.5964847620216 1.68954292636532 -1.51603526290435 -0.218161660864773 0.0825733501052936
196 0.388 0.367661542641671 0.940296851278877 1.59653915334987 1.69002256301158 -1.5157526675898 -0.219409739714834 0.0830633146547665
197 0.39 0.368569978287785 0.939956797208814 1.59659220314207 1.69049963699421 -1.515470591762 -0.220657310070483 0.0835533532956665
198 0.392 0.369480978867779 0.939616874650179 1.59664390787484 1.69097414798655 -1.51518903676233 -0.221904369478227 0.0840434664088029
199 0.394 0.370394543942817 0.939277084565332 1.59669426403216 1.69144609566067 -1.51490800393909 -0.223150915473041 0.0845336543774348
200 0.396 0.371310673063087 0.938937427928622 1.59674326810536 1.6919154796875 -1.51462749464742 -0.224396945578406 0.0850239175873156
201 0.398 0.372229365767761 0.938597905726425 1.59679091659329 1.69238229973678 -1.51434751024941 -0.225642457306357 0.0855142564267376
202 0.4 0.373150621584946 0.938258518957171 1.59683720600238 1.69284655547717 -1.51406805211405 -0.226887448157526 0.0860046712865763
203 0.402 0.374074440031639 0.937919268631384 1.59688213284672 1.6933082465763 -1.51378912161725 -0.228131915621184 0.0864951625603347
204 0.404 0.375000820613682 0.937580155771713 1.59692569364819 1.69376737270078 -1.51351072014188 -0.229375857175288 0.086985730644187
205 0.406 0.375929762825722 0.937241181412965 1.59696788493653 1.69422393351626 -1.51323284907771 -0.230619270286527 0.0874763759370227
206 0.408 0.376861266151158 0.936902346602134 1.59700870324946 1.69467792868748 -1.51295550982152 -0.231862152410366 0.0879670988404902
207 0.41 0.377795330062107 0.936563652398441 1.59704814513274 1.69512935787833 -1.51267870377702 -0.233104500991088 0.0884578997590401
208 0.412 0.37873195401935 0.936225099873356 1.59708620714031 1.69557822075187 -1.51240243235489 -0.234346313461847 0.0889487790999687
209 0.414 0.379671137472297 0.935886690110636 1.59712288583434 1.69602451697037 -1.51212669697282 -0.235587587244708 0.0894397372734609
210 0.416 0.380612879858934 0.935548424206352 1.59715817778535 1.6964682461954 -1.51185149905546 -0.236828319750696 0.089930774692633
211 0.418 0.38155718060579 0.935210303268921 1.59719207957232 1.69690940808782 -1.5115768400345 -0.238068508379842 0.0904218917735756
212 0.42 0.382504039127882 0.934872328419132 1.59722458778275 1.69734800230787 -1.51130272134862 -0.239308150521231 0.090913088935396
213 0.422 0.383453454828683 0.934534500790182 1.5972556990128 1.69778402851517 -1.51102914444351 -0.240547243553046 0.0914043666002606
214 0.424 0.38440542710007 0.934196821527698 1.59728540986734 1.69821748636881 -1.51075611077192 -0.24178578484262 0.0918957251934366
215 0.426 0.385359955322286 0.933859291789768 1.59731371696009 1.69864837552736 -1.51048362179361 -0.243023771746481 0.0923871651433344
216 0.428 0.386317038863895 0.933521912746971 1.59734061691368 1.69907669564892 -1.51021167897542 -0.244261201610398 0.0928786868815489
217 0.43 0.387276677081741 0.933184685582401 1.59736610635976 1.69950244639119 -1.50994028379122 -0.245498071769434 0.0933702908429011
218 0.432 0.388238869320904 0.932847611491693 1.59739018193913 1.69992562741147 -1.50966943772197 -0.246734379547992 0.0938619774654791
219 0.434 0.389203614914658 0.932510691683054 1.59741284030178 1.70034623836673 -1.50939914225568 -0.247970122259861 0.0943537471906794
220 0.436 0.390170913184431 0.932173927377284 1.59743407810701 1.70076427891365 -1.50912939888748 -0.249205297208272 0.0948456004632477
221 0.438 0.391140763439758 0.931837319807807 1.59745389202356 1.70117974870866 -1.50886020911956 -0.25043990168594 0.0953375377313192
222 0.44 0.392113164978246 0.931500870220689 1.59747227872965 1.70159264740799 -1.50859157446123 -0.251673932975118 0.0958295594464589
223 0.442 0.393088117085527 0.931164579874666 1.59748923491312 1.70200297466769 -1.50832349642891 -0.252907388347646 0.0963216660637022
224 0.444 0.394065619035216 0.930828450041171 1.59750475727152 1.70241073014369 -1.50805597654615 -0.254140265064998 0.0968138580415941
225 0.446 0.395045670088874 0.930492482004351 1.59751884251218 1.70281591349184 -1.50778901634361 -0.25537256037834 0.0973061358422294
226 0.448 0.396028269495965 0.930156677061093 1.59753148735235 1.70321852436796 -1.50752261735909 -0.25660427152857 0.0977984999312916
227 0.45 0.397013416493813 0.929821036521048 1.59754268851926 1.70361856242784 -1.50725678113756 -0.257835395746379 0.0982909507780924
228 0.452 0.398001110307561 0.929485561706649 1.59755244275026 1.70401602732735 -1.5069915092311 -0.259065930252294 0.0987834888556103
229 0.454 0.398991350150136 0.929150253953137 1.59756074679286 1.70441091872241 -1.506726803199 -0.260295872256736 0.0992761146405295
230 0.456 0.399984135222199 0.928815114608577 1.59756759740488 1.70480323626908 -1.50646266460768 -0.261525218960066 0.099768828613278
231 0.458 0.400979464712113 0.928480145033881 1.59757299135453 1.70519297962359 -1.50619909503075 -0.262753967552641 0.100261631258066
232 0.46 0.401977337795896 0.928145346602827 1.59757692542049 1.70558014844233 -1.50593609604903 -0.263982115214864 0.100754523062923
233 0.462 0.402977753637188 0.927810720702078 1.59757939639205 1.70596474238199 -1.5056736692505 -0.265209659117237 0.101247504519738
234 0.464 0.403980711387202 0.927476268731201 1.59758040106917 1.70634676109951 -1.50541181623034 -0.266436596420413 0.101740576124292
235 0.466 0.404986210184694 0.927141992102685 1.59757993626258 1.70672620425215 -1.50515053859098 -0.267662924275251 0.1022337383763
236 0.468 0.405994249155913 0.926807892241959 1.5975779987939 1.70710307149753 -1.50488983794201 -0.268888639822866 0.102726991779444
237 0.47 0.40700482741457 0.926473970587407 1.59757458549574 1.7074773624937 -1.50462971590028 -0.270113740194684 0.103220336841414
238 0.472 0.408017944061793 0.926140228590386 1.59756969321177 1.7078490768991 -1.50437017408986 -0.271338222512494 0.103713774073937
239 0.474 0.409033598186093 0.925806667715241 1.59756331879685 1.70821821437268 -1.50411121414204 -0.272562083888507 0.104207303992821
240 0.476 0.410051788863317 0.925473289439324 1.59755545911709 1.7085847745739 -1.50385283769538 -0.273785321425403 0.104700927117986
241 0.478 0.411072515156616 0.925140095253 1.59754611105 1.70894875716276 -1.50359504639568 -0.275007932216388 0.1051946439735
242 0.48 0.412095776116403 0.924807086659672 1.59753527148455 1.70931016179987 -1.50333784189597 -0.276229913345252 0.105688455087614
243 0.482 0.413121570780314 0.924474265175787 1.59752293732127 1.70966898814644 -1.50308122585658 -0.277451261886419 0.106182360992797
244 0.484 0.414149898173172 0.924141632330849 1.59750910547238 1.71002523586438 -1.50282519994509 -0.278671974905004 0.106676362225771
245 0.486 0.415180757306943 0.923809189667436 1.59749377286185 1.71037890461627 -1.50256976583636 -0.279892049456867 0.107170459327546
246 0.488 0.416214147180705 0.92347693874121 1.59747693642552 1.71072999406544 -1.50231492521251 -0.28111148258867 0.107664652843451
247 0.49 0.417250066780603 0.923144881120924 1.59745859311121 1.71107850387601 -1.50206067976296 -0.282330271337933 0.108158943323168
248 0.492 0.418288515079815 0.92281301838844 1.59743873987878 1.71142443371289 -1.50180703118444 -0.283548412733088 0.10865333132077
249 0.494 0.419329491038513 0.922481352138732 1.59741737370027 1.71176778324186 -1.50155398118094 -0.284765903793536 0.109147817394746
250 0.496 0.420372993603824 0.922149883979901 1.59739449155999 1.71210855212956 -1.50130153146376 -0.285982741529702 0.10964240210804
251 0.498 0.421419021709794 0.921818615533179 1.59737009045458 1.71244674004356 -1.50104968375153 -0.287198922943095 0.110137086028081
252 0.5 0.422467574277348 0.921487548432941 1.59734416739316 1.71278234665239 -1.50079843977016 -0.288414445026361 0.110631869726815
253 0.502 0.423518650214258 0.92115668432671 1.59731671939742 1.71311537162556 -1.50054780125289 -0.289629304763342 0.111126753780736
254 0.504 0.424572248415098 0.920826024875166 1.5972877435017 1.71344581463362 -1.50029776994026 -0.290843499129133 0.111621738770918
255 0.506 0.425628367761213 0.920495571752151 1.59725723675307 1.71377367534816 -1.50004834758017 -0.292057025090136 0.112116825283045
256 0.508 0.426687007120678 0.920165326644675 1.5972251962115 1.71409895344188 -1.4997995359278 -0.293269879604124 0.112612013907443
257 0.51 0.427748165348264 0.919835291252921 1.59719161894989 1.7144216485886 -1.49955133674569 -0.294482059620294 0.113107305239111
258 0.512 0.428811841285401 0.91950546729025 1.59715650205419 1.71474176046331 -1.49930375180371 -0.295693562079326 0.113602699877745
259 0.514 0.429878033760137 0.919175856483205 1.59711984262351 1.71505928874217 -1.49905678287905 -0.296904383913441 0.114098198427777
260 0.516 0.430946741587108 0.918846460571513 1.59708163777022 1.7153742331026 -1.49881043175625 -0.298114522046459 0.114593801498395
261 0.518 0.432017963567498 0.918517281308088 1.59704188462004 1.71568659322327 -1.4985647002272 -0.29932397339386 0.115089509703578
262 0.52 0.433091698489001 0.918188320459035 1.59700058031211 1.71599636878415 -1.49831959009112 -0.300532734862839 0.115585323662122
263 0.522 0.434167945125789 0.917859579803647 1.59695772199916 1.71630355946653 -1.49807510315458 -0.301740803352369 0.116081243997667
264 0.524 0.435246702238473 0.917531061134412 1.59691330684755 1.71660816495307 -1.49783124123149 -0.302948175753255 0.116577271338728
265 0.526 0.436327968574069 0.917202766257005 1.59686733203737 1.71691018492781 -1.49758800614312 -0.304154848948199 0.117073406318718
266 0.528 0.437411742865961 0.916874696990294 1.59681979476258 1.71720961907622 -1.4973453997181 -0.305360819811854 0.11756964957598
267 0.53 0.438498023833864 0.916546855166338 1.59677069223108 1.71750646708523 -1.49710342379238 -0.306566085210889 0.118066001753808
268 0.532 0.439586810183794 0.916219242630379 1.59672002166479 1.71780072864327 -1.49686208020928 -0.307770642004043 0.118562463500479
269 0.534 0.440678100608024 0.915891861240847 1.5966677802998 1.71809240344026 -1.4966213708195 -0.308974487042191 0.119059035469273
270 0.536 0.441771893785058 0.915564712869354 1.59661396538643 1.71838149116769 -1.49638129748104 -0.3101776171684 0.119555718318503
271 0.538 0.442868188379589 0.915237799400688 1.59655857418932 1.71866799151864 -1.49614186205929 -0.311380029217989 0.120052512711538
272 0.54 0.443966983042466 0.91491112273281 1.59650160398758 1.71895190418777 -1.49590306642699 -0.312581720018594 0.120549419316826
273 0.542 0.445068276410662 0.91458468477685 1.59644305207483 1.71923322887141 -1.49566491246421 -0.313782686390222 0.121046438807922
274 0.544 0.446172067107234 0.914258487457099 1.59638291575934 1.71951196526756 -1.49542740205841 -0.314982925145319 0.12154357186351
275 0.546 0.447278353741294 0.913932532711005 1.59632119236409 1.7197881130759 -1.49519053710435 -0.316182433088826 0.122040819167425
276 0.548 0.448387134907968 0.913606822489161 1.59625787922691 1.72006167199787 -1.49495431950419 -0.31738120701824 0.122538181408677
277 0.55 0.449498409188369 0.913281358755302 1.59619297370056 1.72033264173665 -1.4947187511674 -0.31857924372368 0.123035659281475
278 0.552 0.450612175149558 0.912956143486296 1.59612647315281 1.72060102199721 -1.49448383401081 -0.319776539987942 0.123533253485245
279 0.554 0.451728431344509 0.91263117867213 1.59605837496658 1.72086681248635 -1.4942495699586 -0.320973092586567 0.124030964724659
280 0.556 0.452847176312079 0.912306466315906 1.59598867653998 1.72113001291272 -1.49401596094226 -0.322168898287895 0.124528793709649
281 0.558 0.453968408576972 0.911982008433825 1.59591737528648 1.72139062298681 -1.49378300890066 -0.323363953853137 0.125026741155429
282 0.56 0.455092126649704 0.91165780705518 1.59584446863492 1.72164864242107 -1.49355071577996 -0.324558256036426 0.125524807782522
283 0.562 0.456218329026572 0.911333864222342 1.5957699540297 1.72190407092982 -1.49331908353368 -0.325751801584889 0.126022994316769
284 0.564 0.457347014189618 0.911010181990748 1.59569382893082 1.72215690822939 -1.49308811412265 -0.326944587238701 0.12652130148936
285 0.566 0.458478180606598 0.910686762428884 1.59561609081397 1.72240715403807 -1.49285780951502 -0.328136609731153 0.127019730036845
286 0.568 0.459611826730947 0.910363607618278 1.59553673717068 1.72265480807615 -1.49262817168628 -0.329327865788713 0.127518280701155
287 0.57 0.460747951001747 0.910040719653478 1.59545576550837 1.72289987006599 -1.4923992026192 -0.330518352131086 0.128016954229621
288 0.572 0.461886551843691 0.909718100642041 1.59537317335046 1.723142339732 -1.49217090430386 -0.331708065471283 0.128515751374993
289 0.574 0.463027627667057 0.909395752704516 1.59528895823648 1.72338221680068 -1.49194327873766 -0.332897002515675 0.129014672895453
290 0.576 0.464171176867667 0.909073677974424 1.59520311772215 1.72361950100065 -1.49171632792528 -0.334085159964064 0.129513719554636
291 0.578 0.46531719782686 0.908751878598245 1.59511564937949 1.72385419206267 -1.49149005387869 -0.335272534509743 0.130012892121643
292 0.58 0.466465688911458 0.908430356735398 1.59502655079689 1.72408628971968 -1.49126445861714 -0.336459122839557 0.13051219137106
293 0.582 0.467616648473732 0.908109114558218 1.59493581957926 1.7243157937068 -1.49103954416714 -0.337644921633971 0.131011618082973
294 0.584 0.468770074851372 0.907788154251945 1.59484345334806 1.72454270376138 -1.49081531256249 -0.338829927567129 0.131511173042979
295 0.586 0.469925966367455 0.907467478014693 1.59474944974146 1.72476701962301 -1.49059176584422 -0.34001413730692 0.132010857042206
296 0.588 0.471084321330411 0.907147088057438 1.59465380641438 1.72498874103356 -1.49036890606064 -0.341197547515043 0.132510670877323
297 0.59 0.472245138033991 0.906826986603992 1.59455652103862 1.72520786773716 -1.49014673526726 -0.342380154847064 0.133010615350555
298 0.592 0.473408414757241 0.906507175890978 1.59445759130295 1.72542439948029 -1.48992525552685 -0.34356195595249 0.133510691269697
299 0.594 0.47457414976446 0.906187658167812 1.59435701491321 1.72563833601175 -1.4897044689094 -0.344742947474824 0.134010899448123
300 0.596 0.47574234130518 0.905868435696676 1.59425478959237 1.72584967708271 -1.48948437749209 -0.345923126051633 0.134511240704803
301 0.598 0.476912987614126 0.905549510752494 1.5941509130807 1.72605842244674 -1.48926498335933 -0.347102488314612 0.13501171586431
302 0.6 0.478086086911188 0.905230885622905 1.59404538313576 1.72626457185978 -1.48904628860268 -0.348281030889647 0.135512325756834
303 0.602 0.479261637401393 0.904912562608241 1.59393819753261 1.72646812508025 -1.48882829532091 -0.349458750396881 0.136013071218192
304 0.604 0.480439637274868 0.904594544021494 1.59382935406381 1.72666908186899 -1.48861100561995 -0.350635643450775 0.136513953089834
305 0.606 0.481620084706813 0.904276832188293 1.59371885053956 1.72686744198932 -1.48839442161287 -0.351811706660177 0.13701497221886
306 0.608 0.482802977857471 0.903959429446877 1.59360668478781 1.72706320520708 -1.48817854541989 -0.352986936628383 0.137516129458023
307 0.61 0.483988314872094 0.90364233814806 1.5934928546543 1.72725637129059 -1.48796337916836 -0.3541613299532 0.138017425665739
308 0.612 0.485176093880918 0.903325560655206 1.5933773580027 1.72744694001076 -1.48774892499274 -0.355334883227016 0.138518861706095
309 0.614 0.486366312999127 0.903009099344198 1.59326019271468 1.72763491114102 -1.4875351850346 -0.356507593036861 0.139020438448859
310 0.616 0.487558970326826 0.902692956603405 1.59314135669003 1.7278202844574 -1.48732216144258 -0.357679455964469 0.139522156769481
311 0.618 0.488754063949011 0.902377134833652 1.59302084784673 1.72800305973853 -1.4871098563724 -0.358850468586351 0.140024017549106
312 0.62 0.489951591935539 0.902061636448187 1.59289866412103 1.72818323676566 -1.48689827198684 -0.36002062747385 0.140526021674575
313 0.622 0.491151552341097 0.901746463872645 1.59277480346758 1.72836081532269 -1.4866874104557 -0.361189929193213 0.141028170038431
314 0.624 0.492353943205176 0.901431619545019 1.59264926385951 1.72853579519617 -1.48647727395584 -0.362358370305652 0.141530463538927
315 0.626 0.493558762552036 0.901117105915622 1.59252204328849 1.72870817617534 -1.48626786467109 -0.363525947367411 0.142032903080027
316 0.628 0.494766008390683 0.900802925447048 1.59239313976488 1.72887795805214 -1.48605918479229 -0.364692656929829 0.142535489571409
317 0.63 0.495975678714836 0.900489080614146 1.59226255131776 1.72904514062123 -1.48585123651724 -0.365858495539406 0.143038223928472
318 0.632 0.497187771502897 0.900175573903971 1.59213027599509 1.72920972368 -1.48564402205071 -0.36702345973787 0.143541107072334
319 0.634 0.498402284717928 0.899862407815755 1.59199631186372 1.72937170702861 -1.48543754360439 -0.368187546062236 0.144044139929837
320 0.636 0.499619216307615 0.899549584860865 1.59186065700957 1.72953109046998 -1.48523180339688 -0.369350751044879 0.144547323433548
321 0.638 0.500838564204245 0.899237107562765 1.59172330953764 1.72968787380984 -1.4850268036537 -0.370513071213592 0.145050658521758
322 0.64 0.502060326324677 0.898924978456973 1.59158426757215 1.72984205685669 -1.48482254660723 -0.371674503091655 0.145554146138485
323 0.642 0.503284500570311 0.898613200091027 1.59144352925663 1.72999363942192 -1.4846190344967 -0.372835043197899 0.146057787233472
324 0.644 0.504511084827061 0.898301775024437 1.59130109275397 1.73014262131969 -1.48441626956818 -0.373994688046771 0.146561582762187
325 0.646 0.50574007696533 0.897990705828645 1.59115695624656 1.73028900236709 -1.48421425407455 -0.3751534341484 0.147065533685819
326 0.648 0.506971474839979 0.897679995086986 1.59101111793635 1.73043278238403 -1.4840129902755 -0.37631127800866 0.147569640971281
327 0.65 0.508205276290301 0.89736964539464 1.59086357604494 1.73057396119335 -1.48381248043744 -0.377468216129236 0.148073905591203
328 0.652 0.509441479139993 0.897059659358588 1.59071432881369 1.73071253862077 -1.48361272683357 -0.37862424500769 0.148578328523931
329 0.654 0.51068008119713 0.896750039597571 1.59056337450377 1.73084851449496 -1.4834137317438 -0.379779361137527 0.149082910753522
330 0.656 0.511921080254135 0.896440788742039 1.59041071139629 1.73098188864751 -1.4832154974547 -0.380933561008256 0.149587653269741
331 0.658 0.513164474087757 0.896131909434109 1.59025633779236 1.73111266091297 -1.48301802625956 -0.382086841105458 0.150092557068056
332 0.66 0.514410260459039 0.895823404327517 1.59010025201319 1.73124083112886 -1.48282132045828 -0.383239197910851 0.15059762314963
333 0.662 0.515658437113297 0.89551527608757 1.58994245240019 1.73136639913569 -1.48262538235739 -0.384390627902356 0.151102852521318
334 0.664 0.516909001780089 0.895207527391094 1.58978293731502 1.73148936477694 -1.48243021427003 -0.385541127554157 0.151608246195661
335 0.666 0.51816195217319 0.894900160926391 1.58962170513971 1.73160972789914 -1.48223581851586 -0.386690693336772 0.152113805190873
336 0.668 0.519417285990568 0.894593179393185 1.58945875427673 1.7317274883518 -1.48204219742113 -0.387839321717115 0.15261953053084
337 0.67 0.520675000914355 0.894286585502574 1.58929408314909 1.73184264598752 -1.48184935331856 -0.38898700915856 0.153125423245108
338 0.672 0.521935094610826 0.893980381976974 1.5891276902004 1.7319552006619 -1.48165728854736 -0.390133752121008 0.153631484368872
339 0.674 0.523197564730369 0.893674571550073 1.58895957389499 1.73206515223364 -1.48146600545321 -0.391279547060951 0.154137714942972
340 0.676 0.524462408907462 0.893369156966773 1.58878973271797 1.73217250056449 -1.48127550638819 -0.392424390431536 0.154644116013877
341 0.678 0.525729624760646 0.893064140983141 1.58861816517533 1.73227724551931 -1.48108579371077 -0.393568278682629 0.155150688633677
342 0.68 0.526999209892505 0.892759526366351 1.58844486979399 1.73237938696605 -1.4808968697858 -0.394711208260885 0.155657433860071
343 0.682 0.528271161889635 0.892455315894632 1.58826984512195 1.73247892477576 -1.48070873698442 -0.395853175609803 0.156164352756354
344 0.684 0.529545478322624 0.892151512357212 1.58809308972831 1.73257585882264 -1.48052139768411 -0.396994177169802 0.156671446391406
345 0.686 0.530822156746026 0.891848118554258 1.58791460220337 1.73267018898401 -1.48033485426858 -0.398134209378273 0.157178715839674
346 0.688000000000001 0.532101194698337 0.891545137296824 1.58773438115874 1.73276191514032 -1.48014910912778 -0.399273268669656 0.157686162181166
347 0.690000000000001 0.533382589701972 0.891242571406793 1.58755242522738 1.7328510371752 -1.47996416465785 -0.400411351475495 0.158193786501428
348 0.692000000000001 0.53466633926324 0.890940423716815 1.58736873306373 1.73293755497542 -1.4797800232611 -0.401548454224505 0.158701589891533
349 0.694000000000001 0.535952440872321 0.89063869707025 1.58718330334374 1.73302146843096 -1.47959668734595 -0.40268457334264 0.159209573448066
350 0.696000000000001 0.537240892003244 0.890337394321109 1.586996134765 1.73310277743496 -1.47941415932693 -0.403819705253151 0.159717738273103
351 0.698000000000001 0.538531690113862 0.890036518333992 1.58680722604678 1.73318148188375 -1.4792324416246 -0.404953846376654 0.1602260854742
352 0.700000000000001 0.539824832645832 0.88973607198403 1.58661657593013 1.73325758167688 -1.47905153666555 -0.406086993131194 0.160734616164367
353 0.702000000000001 0.541120317024588 0.889436058156818 1.58642418317797 1.73333107671711 -1.47887144688234 -0.407219141932305 0.161243331462059
354 0.704000000000001 0.542418140659324 0.889136479748358 1.58623004657515 1.7334019669104 -1.47869217471346 -0.40835028919308 0.161752232491148
355 0.706000000000001 0.543718300942968 0.888837339664992 1.58603416492852 1.73347025216597 -1.47851372260333 -0.409480431324229 0.16226132038091
356 0.708000000000001 0.54502079525216 0.888538640823339 1.58583653706706 1.73353593239626 -1.47833609300219 -0.410609564734145 0.162770596266001
357 0.710000000000001 0.546325620947233 0.888240386150234 1.5856371618419 1.73359900751695 -1.47815928836615 -0.411737685828969 0.163280061286435
358 0.712000000000001 0.547632775372191 0.887942578582658 1.58543603812642 1.73365947744698 -1.47798331115705 -0.412864791012652 0.163789716587566
359 0.714000000000001 0.548942255854684 0.887645221067672 1.58523316481633 1.73371734210856 -1.47780816384249 -0.413990876687015 0.164299563320064
360 0.716000000000001 0.550254059705993 0.887348316562356 1.58502854082976 1.73377260142713 -1.47763384889577 -0.415115939251818 0.16480960263989
361 0.718000000000001 0.551568184221004 0.887051868033737 1.58482216510729 1.73382525533145 -1.47746036879584 -0.416239975104821 0.165319835708274
362 0.720000000000001 0.552884626678192 0.886755878458723 1.5846140366121 1.73387530375352 -1.47728772602725 -0.417362980641844 0.165830263691691
363 0.722000000000001 0.554203384339596 0.886460350824033 1.58440415432997 1.73392274662865 -1.47711592308013 -0.418484952256834 0.166340887761837
364 0.724000000000001 0.555524454450804 0.886165288126131 1.58419251726939 1.73396758389542 -1.47694496245012 -0.419605886341925 0.166851709095599
365 0.726000000000001 0.556847834240929 0.885870693371153 1.58397912446164 1.73400981549571 -1.47677484663834 -0.420725779287503 0.167362728875035
366 0.728000000000001 0.558173520922593 0.885576569574838 1.58376397496086 1.73404944137472 -1.47660557815134 -0.421844627482264 0.16787394828734
367 0.730000000000001 0.559501511691904 0.885282919762457 1.58354706784411 1.73408646148093 -1.47643715950105 -0.422962427313284 0.168385368524824
368 0.732000000000001 0.560831803728442 0.88498974696874 1.58332840221145 1.73412087576615 -1.47626959320474 -0.424079175166072 0.168896990784883
369 0.734000000000001 0.562164394195236 0.884697054237806 1.58310797718603 1.73415268418549 -1.47610288178497 -0.42519486742464 0.169408816269966
370 0.736000000000001 0.563499280238748 0.884404844623089 1.58288579191413 1.73418188669737 -1.47593702776951 -0.426309500471559 0.169920846187549
371 0.738000000000001 0.564836458988852 0.884113121187264 1.58266184556526 1.73420848326357 -1.47577203369137 -0.427423070688025 0.170433081750106
372 0.740000000000001 0.566175927558821 0.883821887002171 1.5824361373322 1.73423247384916 -1.47560790208866 -0.42853557445392 0.170945524175074
373 0.742000000000001 0.567517683045306 0.883531145148745 1.58220866643111 1.73425385842254 -1.47544463550459 -0.429647008147871 0.171458174684822
374 0.744000000000001 0.56886172252832 0.883240898716936 1.58197943210157 1.73427263695546 -1.47528223648741 -0.430757368147312 0.171971034506622
375 0.746000000000001 0.570208043071218 0.882951150805634 1.58174843360665 1.73428880942298 -1.47512070759036 -0.431866650828549 0.172484104872614
376 0.748000000000001 0.571556641720685 0.882661904522594 1.58151567023301 1.73430237580353 -1.47496005137162 -0.432974852566815 0.172997387019772
377 0.750000000000001 0.572907515506717 0.882373162984358 1.58128114129091 1.73431333607884 -1.47480027039421 -0.434081969736338 0.173510882189869
378 0.752000000000001 0.574260661442607 0.882084929316175 1.58104484611434 1.734321690234 -1.47464136722603 -0.435187998710394 0.174024591629444
379 0.754000000000001 0.575616076524924 0.881797206651926 1.58080678406105 1.73432743825743 -1.47448334443972 -0.436292935861373 0.174538516589767
380 0.756000000000001 0.576973757733505 0.881509998134041 1.58056695451263 1.73433058014092 -1.47432620461263 -0.437396777560839 0.175052658326798
381 0.758000000000001 0.578333702031433 0.881223306913424 1.58032535687455 1.73433111587956 -1.4741699503268 -0.438499520179586 0.175567018101155
382 0.760000000000001 0.579695906365026 0.880937136149367 1.58008199057628 1.73432904547181 -1.47401458416884 -0.439601160087703 0.176081597178075
383 0.762000000000001 0.581060367663824 0.880651489009475 1.57983685507131 1.73432436891946 -1.47386010872993 -0.440701693654633 0.176596396827374
384 0.764000000000001 0.582427082840568 0.88036636866958 1.5795899498372 1.73431708622767 -1.47370652660573 -0.441801117249229 0.177111418323409
385 0.766000000000001 0.583796048791196 0.880081778313663 1.5793412743757 1.73430719740491 -1.47355384039632 -0.442899427239818 0.177626662945039
386 0.768000000000001 0.585167262394818 0.879797721133767 1.57909082821277 1.73429470246301 -1.47340205270617 -0.443996619994258 0.178142131975585
387 0.770000000000001 0.586540720513715 0.879514200329917 1.57883861089866 1.73427960141713 -1.47325116614405 -0.445092691879997 0.178657826702786
388 0.772000000000001 0.587916419993315 0.879231219110036 1.57858462200795 1.73426189428578 -1.47310118332296 -0.446187639264133 0.179173748418762
389 0.774000000000001 0.589294357662189 0.878948780689859 1.57832886113965 1.73424158109082 -1.47295210686012 -0.447281458513473 0.179689898419965
390 0.776000000000001 0.590674530332033 0.878666888292853 1.57807132791721 1.73421866185741 -1.47280393937686 -0.44837414599459 0.180206278007144
391 0.778000000000001 0.592056934797661 0.878385545150123 1.57781202198864 1.73419313661408 -1.47265668349856 -0.449465698073883 0.180722888485294
392 0.780000000000001 0.593441567836988 0.878104754500334 1.5775509430265 1.73416500539268 -1.47251034185463 -0.450556111117633 0.181239731163617
393 0.782000000000001 0.594828426211026 0.877824519589624 1.57728809072802 1.73413426822839 -1.47236491707839 -0.451645381492064 0.181756807355473
394 0.784000000000001 0.596217506663866 0.87754484367151 1.57702346481513 1.7341009251597 -1.47222041180703 -0.452733505563398 0.182274118378338
395 0.786000000000001 0.597608805922672 0.87726573000681 1.57675706503451 1.73406497622846 -1.47207682868156 -0.453820479697916 0.182791665553752
396 0.788000000000001 0.599002320697671 0.876987181863549 1.57648889115765 1.73402642147981 -1.47193417034672 -0.45490630026201 0.183309450207279
397 0.790000000000001 0.600398047682141 0.876709202516871 1.57621894298094 1.73398526096222 -1.47179243945091 -0.455990963622245 0.183827473668453
398 0.792000000000001 0.601795983552404 0.876431795248953 1.57594722032567 1.73394149472746 -1.47165163864617 -0.457074466145414 0.184345737270735
399 0.794000000000001 0.603196124967817 0.876154963348912 1.57567372303813 1.73389512283062 -1.47151177058802 -0.458156804198595 0.184864242351456
400 0.796000000000001 0.604598468570761 0.875878710112718 1.57539845098963 1.73384614533009 -1.4713728379355 -0.459237974149207 0.185382990251778
401 0.798000000000001 0.606003010986638 0.875603038843101 1.57512140407657 1.73379456228755 -1.471234843351 -0.460317972365066 0.185901982316635
402 0.800000000000001 0.607409748823857 0.875327952849463 1.57484258222051 1.73374037376799 -1.47109778950029 -0.461396795214443 0.186421219894683
403 0.802000000000001 0.608818678673833 0.875053455447783 1.57456198536819 1.73368357983966 -1.47096167905234 -0.462474439066119 0.186940704338253
404 0.804000000000001 0.610229797110975 0.874779549960529 1.57427961349158 1.73362418057413 -1.47082651467933 -0.463550900289437 0.187460437003294
405 0.806000000000001 0.611643100692684 0.874506239716561 1.57399546658798 1.73356217604621 -1.47069229905656 -0.464626175254363 0.187980419249321
406 0.808000000000001 0.613058585959342 0.874233528051042 1.57370954468001 1.73349756633399 -1.47055903486235 -0.465700260331539 0.188500652439361
407 0.810000000000001 0.614476249434314 0.873961418305345 1.57342184781567 1.73343035151884 -1.47042672477799 -0.466773151892335 0.189021137939902
408 0.812000000000001 0.615896087623933 0.873689913826956 1.57313237606844 1.73336053168536 -1.47029537148767 -0.467844846308908 0.189541877120831
409 0.814000000000001 0.617318097017503 0.873419017969381 1.57284112953726 1.73328810692141 -1.47016497767838 -0.468915339954255 0.190062871355384
410 0.816000000000001 0.618742274087295 0.873148734092055 1.57254810834662 1.73321307731809 -1.47003554603984 -0.469984629202264 0.190584122020088
411 0.818000000000001 0.620168615288535 0.872879065560241 1.57225331264657 1.73313544296973 -1.46990707926447 -0.471052710427774 0.191105630494703
412 0.820000000000001 0.62159711705941 0.872610015744938 1.57195674261282 1.7330552039739 -1.46977958004723 -0.472119580006623 0.191627398162166
413 0.822000000000001 0.623027775821061 0.872341588022787 1.57165839844673 1.73297236043136 -1.46965305108561 -0.473185234315705 0.192149426408529
414 0.824000000000001 0.624460587977579 0.872073785775971 1.57135828037537 1.7328869124461 -1.46952749507954 -0.47424966973302 0.192671716622905
415 0.826000000000001 0.625895549916005 0.871806612392117 1.5710563886516 1.7327988601253 -1.46940291473127 -0.475312882637732 0.193194270197405
416 0.828000000000001 0.627332658006332 0.871540071264207 1.57075272355404 1.73270820357932 -1.46927931274535 -0.476374869410216 0.193717088527078
417 0.830000000000001 0.628771908601495 0.871274165790472 1.57044728538719 1.73261494292173 -1.46915669182849 -0.477435626432114 0.19424017300985
418 0.832000000000001 0.630213298037378 0.871008899374296 1.57014007448141 1.73251907826924 -1.46903505468952 -0.478495150086386 0.194763525046463
419 0.834000000000001 0.631656822632812 0.870744275424124 1.56983109119298 1.73242060974174 -1.4689144040393 -0.479553436757363 0.195287146040414
420 0.836000000000001 0.633102478689575 0.870480297353353 1.56952033590416 1.73231953746225 -1.46879474259064 -0.480610482830795 0.195811037397887
421 0.838000000000001 0.634550262492392 0.870216968580243 1.56920780902321 1.73221586155694 -1.46867607305818 -0.48166628469391 0.196335200527698
422 0.840000000000001 0.636000170308938 0.869954292527811 1.56889351098442 1.73210958215513 -1.46855839815836 -0.482720838735454 0.196859636841221
423 0.842000000000001 0.637452198389838 0.869692272623734 1.56857744224815 1.73200069938921 -1.46844172060932 -0.483774141345754 0.197384347752331
424 0.844000000000001 0.638906342968672 0.869430912300249 1.56825960330088 1.73188921339473 -1.46832604313078 -0.484826188916759 0.197909334677334
425 0.846000000000001 0.640362600261975 0.869170214994053 1.56793999465524 1.73177512431028 -1.468211368444 -0.485876977842096 0.198434599034903
426 0.848000000000001 0.641820966469242 0.868910184146201 1.56761861685004 1.73165843227758 -1.46809769927166 -0.486926504517117 0.19896014224601
427 0.850000000000001 0.643281437772933 0.868650823202005 1.56729547045029 1.73153913744139 -1.4679850383378 -0.487974765338951 0.19948596573386
428 0.852000000000001 0.644744010338476 0.868392135610934 1.56697055604728 1.73141723994954 -1.46787338836771 -0.48902175670655 0.200012070923822
429 0.854000000000001 0.64620868031427 0.868134124826513 1.56664387425853 1.73129273995289 -1.46776275208785 -0.490067475020745 0.200538459243361
430 0.856000000000001 0.647675443831696 0.867876794306219 1.56631542572793 1.73116563760535 -1.46765313222577 -0.491111916684285 0.201065132121969
431 0.858000000000001 0.649144297005118 0.867620147511379 1.56598521112567 1.73103593306384 -1.46754453151001 -0.492155078101897 0.201592090991095
432 0.860000000000001 0.65061523593189 0.867364187907071 1.56565323114831 1.73090362648827 -1.46743695267 -0.493196955680325 0.202119337284073
433 0.862000000000001 0.652088256692368 0.867108918962015 1.56531948651884 1.73076871804157 -1.46733039843599 -0.494237545828382 0.202646872436052
434 0.864000000000001 0.653563355349911 0.866854344148476 1.56498397798665 1.73063120788962 -1.46722487153896 -0.495276844957 0.203174697883929
435 0.866000000000001 0.655040527950894 0.866600466942159 1.5646467063276 1.73049109620127 -1.46712037471049 -0.496314849479273 0.203702815066266
436 0.868000000000001 0.656519770524717 0.866347290822102 1.56430767234401 1.73034838314831 -1.46701691068271 -0.497351555810508 0.20423122542323
437 0.870000000000001 0.658001079083809 0.866094819270579 1.56396687686473 1.73020306890547 -1.46691448218819 -0.498386960368268 0.20475993039651
438 0.872000000000001 0.659484449623645 0.865843055772988 1.56362432074513 1.73005515365041 -1.46681309195986 -0.499421059572424 0.205288931429246
439 0.874000000000001 0.660969878122753 0.865592003817755 1.56328000486712 1.72990463756365 -1.46671274273087 -0.500453849845198 0.205818229965956
440 0.876000000000001 0.662457360542723 0.865341666896222 1.56293393013922 1.72975152082862 -1.46661343723456 -0.501485327611209 0.20634782745246
441 0.878000000000001 0.663946892828224 0.865092048502547 1.5625860974965 1.72959580363163 -1.4665151782043 -0.502515489297519 0.206877725335803
442 0.880000000000001 0.665438470907013 0.864843152133601 1.56223650790071 1.72943748616182 -1.46641796837345 -0.50354433133368 0.207407925064179
443 0.882000000000001 0.666932090689948 0.864594981288854 1.56188516234017 1.72927656861116 -1.46632181047522 -0.504571850151778 0.207938428086857
444 0.884000000000001 0.668427748071 0.864347539470282 1.56153206182992 1.72911305117447 -1.46622670724262 -0.50559804218648 0.208469235854099
445 0.886000000000001 0.669925438927274 0.864100830182251 1.56117720741164 1.72894693404934 -1.46613266140828 -0.506622903875073 0.209000349817084
446 0.888000000000001 0.671425159119014 0.863854856931418 1.56082060015371 1.72877821743615 -1.46603967570445 -0.507646431657516 0.209531771427833
447 0.890000000000001 0.672926904489625 0.863609623226621 1.56046224115124 1.72860690153805 -1.46594775286284 -0.508668621976478 0.210063502139123
448 0.892000000000001 0.674430670865689 0.863365132578778 1.56010213152603 1.72843298656094 -1.46585689561452 -0.509689471277386 0.210595543404412
449 0.894000000000001 0.675936454056978 0.863121388500776 1.55974027242666 1.72825647271344 -1.46576710668985 -0.510708976008465 0.211127896677758
450 0.896000000000001 0.677444249856473 0.862878394507367 1.55937666502844 1.72807736020688 -1.46567838881836 -0.511727132620783 0.21166056341374
451 0.898000000000001 0.678954054040382 0.862636154115063 1.55901131053346 1.7278956492553 -1.46559074472864 -0.512743937568295 0.212193545067371
452 0.900000000000001 0.68046586236816 0.862394670842026 1.55864421017057 1.72771134007538 -1.46550417714826 -0.513759387307882 0.212726843094021
453 0.902000000000001 0.681979670582525 0.862153948207967 1.55827536519544 1.72752443288647 -1.46541868880367 -0.514773478299397 0.213260458949336
454 0.904000000000001 0.68349547440948 0.861913989734032 1.55790477689051 1.72733492791056 -1.46533428242004 -0.515786207005705 0.213794394089151
455 0.906000000000001 0.685013269558333 0.861674798942701 1.55753244656506 1.72714282537223 -1.46525096072125 -0.516797569892724 0.214328649969407
456 0.908000000000001 0.686533051721719 0.861436379357682 1.55715837555517 1.72694812549868 -1.4651687264297 -0.51780756342947 0.21486322804607
457 0.910000000000001 0.68805481657562 0.861198734503797 1.55678256522375 1.72675082851966 -1.46508758226627 -0.518816184088091 0.215398129775046
458 0.912000000000001 0.689578559779388 0.860961867906883 1.55640501696055 1.72655093466749 -1.46500753095015 -0.519823428343917 0.215933356612093
459 0.914000000000001 0.691104276975769 0.86072578309368 1.55602573218213 1.72634844417699 -1.4649285751988 -0.520829292675493 0.216468910012739
460 0.916000000000001 0.692631963790926 0.860490483591726 1.55564471233194 1.72614335728551 -1.46485071772781 -0.521833773564622 0.217004791432196
461 0.918000000000001 0.694161615834466 0.860255972929249 1.55526195888024 1.7259356742329 -1.46477396125078 -0.522836867496405 0.217541002325271
462 0.920000000000001 0.695693228699459 0.86002225463506 1.55487747332414 1.72572539526144 -1.46469830847925 -0.523838570959278 0.218077544146281
463 0.922000000000001 0.697226797962472 0.859789332238447 1.55449125718762 1.72551252061588 -1.46462376212257 -0.524838880445057 0.218614418348965
464 0.924000000000001 0.698762319183589 0.859557209269066 1.5541033120215 1.72529705054338 -1.46455032488778 -0.525837792448971 0.219151626386398
465 0.926000000000001 0.70029978790644 0.859325889256835 1.55371363940345 1.72507898529349 -1.46447799947954 -0.526835303469702 0.219689169710901
466 0.928000000000001 0.701839199658234 0.859095375731825 1.553322240938 1.72485832511816 -1.46440678859996 -0.527831410009425 0.220227049773952
467 0.930000000000001 0.703380549949778 0.858865672224156 1.55292911825653 1.72463507027167 -1.46433669494857 -0.528826108573845 0.220765268026098
468 0.932000000000001 0.704923834275515 0.858636782263888 1.55253427301724 1.72440922101062 -1.46426772122215 -0.529819395672234 0.221303825916866
469 0.934000000000001 0.706469048113551 0.858408709380912 1.5521377069052 1.72418077759394 -1.46419987011463 -0.53081126781747 0.221842724894669
470 0.936000000000001 0.708016186925684 0.858181457104846 1.5517394216323 1.72394974028283 -1.464133144317 -0.531801721526072 0.222381966406721
471 0.938000000000001 0.709565246157439 0.857955028964927 1.55133941893729 1.72371610934073 -1.46406754651717 -0.532790753318239 0.222921551898944
472 0.940000000000001 0.711116221238098 0.857729428489903 1.55093770058571 1.72347988503334 -1.4640030793999 -0.533778359717884 0.223461482815873
473 0.942000000000001 0.712669107580733 0.857504659207926 1.55053426836993 1.72324106762854 -1.46393974564663 -0.534764537252671 0.224001760600571
474 0.944000000000001 0.714223900582241 0.857280724646449 1.55012912410912 1.72299965739641 -1.46387754793543 -0.535749282454052 0.224542386694531
475 0.946000000000001 0.715780595623377 0.857057628332111 1.54972226964928 1.72275565460918 -1.46381648894084 -0.536732591857301 0.225083362537588
476 0.948000000000001 0.717339188068792 0.85683537379064 1.54931370686316 1.72250905954121 -1.46375657133378 -0.53771446200155 0.22562468956782
477 0.950000000000001 0.718899673267065 0.85661396454674 1.54890343765031 1.72225987246896 -1.46369779778142 -0.538694889429823 0.226166369221463
478 0.952000000000001 0.720462046550743 0.856393404123984 1.54849146393702 1.72200809367097 -1.46364017094711 -0.539673870689072 0.226708402932809
479 0.954000000000001 0.722026303236377 0.856173696044713 1.54807778767637 1.72175372342785 -1.4635836934902 -0.540651402330209 0.227250792134119
480 0.956000000000001 0.72359243862456 0.855954843829926 1.54766241084813 1.72149676202222 -1.46352836806596 -0.541627480908142 0.227793538255521
481 0.958000000000001 0.725160447999967 0.855736850999173 1.54724533545882 1.72123720973869 -1.46347419732549 -0.542602102981809 0.228336642724924
482 0.960000000000001 0.726730326631394 0.855519721070452 1.54682656354166 1.72097506686386 -1.46342118391554 -0.543575265114208 0.228880106967914
483 0.962000000000001 0.7283020697718 0.8553034575601 1.54640609715655 1.72071033368628 -1.46336933047848 -0.544546963872433 0.229423932407666
484 0.964000000000001 0.729875672658345 0.855088063982692 1.54598393839006 1.72044301049639 -1.46331863965209 -0.545517195827706 0.229968120464842
485 0.966000000000001 0.731451130512437 0.85487354385093 1.54556008935541 1.72017309758653 -1.46326911406952 -0.546485957555409 0.230512672557499
486 0.968000000000001 0.733028438539769 0.854659900675541 1.54513455219245 1.71990059525092 -1.46322075635914 -0.547453245635117 0.23105759010099
487 0.970000000000001 0.734607591930368 0.854447137965172 1.54470732906763 1.7196255037856 -1.46317356914442 -0.548419056650628 0.231602874507869
488 0.972000000000001 0.736188585858637 0.854235259226282 1.544278422174 1.71934782348839 -1.46312755504384 -0.549383387189995 0.232148527187791
489 0.974000000000001 0.7377714154834 0.854024267963042 1.54384783373116 1.71906755465893 -1.46308271667073 -0.550346233845558 0.23269454954742
490 0.976000000000001 0.739356075947947 0.853814167677228 1.54341556598525 1.71878469759857 -1.46303905663319 -0.551307593213976 0.233240942990322
491 0.978000000000001 0.740942562380084 0.853604961868114 1.54298162120891 1.71849925261039 -1.46299657753396 -0.552267461896253 0.233787708916878
492 0.980000000000001 0.74253086989218 0.853396654032375 1.5425460017013 1.71821121999916 -1.46295528197029 -0.553225836497772 0.234334848724176
493 0.982000000000001 0.744120993581211 0.853189247663977 1.542108709788 1.7179206000713 -1.46291517253385 -0.554182713628324 0.234882363805919
494 0.984000000000001 0.745712928528814 0.852982746254073 1.54166974782104 1.71762739313486 -1.46287625181059 -0.555138089902139 0.235430255552321
495 0.986000000000001 0.747306669801336 0.852777153290908 1.54122911817886 1.71733159949949 -1.4628385223806 -0.556091961937912 0.235978525350012
496 0.988000000000001 0.748902212449883 0.852572472259706 1.54078682326625 1.7170332194764 -1.46280198681805 -0.557044326358833 0.236527174581937
497 0.990000000000001 0.750499551510374 0.852368706642572 1.54034286551436 1.71673225337834 -1.46276664769103 -0.557995179792617 0.237076204627253
498 0.992000000000001 0.752098682003593 0.852165859918391 1.53989724738063 1.71642870151956 -1.46273250756142 -0.558944518871534 0.237625616861236
499 0.994000000000001 0.753699598935238 0.851963935562724 1.53944997134879 1.71612256421578 -1.46269956898482 -0.55989234023243 0.238175412655175
500 0.996000000000001 0.755302297295983 0.851762937047704 1.53900103992882 1.71581384178417 -1.46266783451038 -0.560838640516764 0.238725593376274
501 0.998000000000001 0.756906772061525 0.85156286784194 1.53855045565687 1.7155025345433 -1.4626373066807 -0.561783416370628 0.239276160387549
502 1 0.758513018192645 0.85136373141041 1.5380982210953 1.71518864281313 -1.46260798803172 -0.562726664444779 0.239827115047732
503 1.002 0.760121030635263 0.851165531214365 1.53764433883257 1.71487216691494 -1.46257988109258 -0.56366838139466 0.240378458711165
504 1.004 0.76172919481938 0.850968474709213 1.53718927241537 1.71455342542013 -1.46255302535324 -0.56460762397024 0.240929648748077
505 1.006 0.763334277846886 0.850772968998806 1.53673395490576 1.71423306805792 -1.46252749178502 -0.565542516737705 0.241479597042579
506 1.008 0.764933032822655 0.850579414161899 1.53627933296572 1.71391176514017 -1.46250334251824 -0.566471196624796 0.242027213011431
507 1.01 0.766522199073563 0.850388203246982 1.53582636669269 1.71359020737919 -1.46248063087678 -0.567391812881454 0.242571403604126
508 1.012 0.768098502436208 0.850199722302999 1.53537602938591 1.71326910560232 -1.4624594014561 -0.568302526976553 0.243111073314558
509 1.014 0.769658655611943 0.850014350446767 1.53492930724412 1.71294919036331 -1.46243969024533 -0.569201512429837 0.243645124204465
510 1.016 0.771199358587896 0.849832459967934 1.53448719899545 1.71263121145076 -1.46242152479363 -0.570086954578155 0.244172455938864
511 1.018 0.772717299122628 0.849654416472253 1.53405071545996 1.71231593729341 -1.46240492442135 -0.570957050275173 0.24469196583363
512 1.02 0.774209153295166 0.849480579063933 1.53362087904565 1.71200415426268 -1.46238990047625 -0.571810007523754 0.245202548915392
513 1.022 0.775671586116195 0.849311300567766 1.53319872317847 1.71169666587236 -1.46237645663525 -0.572644045040266 0.245703097993917
514 1.024 0.777101252200228 0.849146927791694 1.53278529166706 1.71139429187555 -1.46236458925177 -0.573457391750115 0.246192503747102
515 1.026 0.778494796497713 0.848987801830413 1.53238163800274 1.711097867259 -1.46235428774923 -0.574248286213881 0.246669654818711
516 1.028 0.779848855086078 0.848834258410554 1.53198882459542 1.71080824113483 -1.46234553506075 -0.575014975983496 0.247133437928979
517 1.03 0.78116005601885 0.848686628277909 1.53160792194592 1.71052627552974 -1.4623383081153 -0.575755716887987 0.247582737998157
518 1.032 0.782425020232096 0.848545237627096 1.53124000775516 1.71025284407179 -1.46233257837058 -0.576468772248378 0.248016438283103
519 1.034 0.783640362507572 0.848410408573973 1.53088616597073 1.70998883057466 -1.46232831239258 -0.577152412021443 0.248433420526975
520 1.036 0.7848026924921 0.848282459671025 1.53054748577114 1.70973512751965 -1.46232547248219 -0.577804911872101 0.248832565122065
521 1.038 0.785908615772882 0.848161706465851 1.53022506048805 1.70949263443516 -1.46232401734862 -0.57842455217434 0.24921275128582
522 1.04 0.78695473500859 0.848048462102792 1.52991998646666 1.70926225617395 -1.4623239028299 -0.579009616940665 0.249572857250063
523 1.042 0.787937651116305 0.847943037967608 1.52963336186444 1.70904490108794 -1.46232508266035 -0.579558392680183 0.249911760463395
524 1.044 0.788853964514537 0.847845744375028 1.52936628538811 1.70884147910071 -1.46232750928497 -0.580069167185563 0.250228337806779
525 1.046 0.789700276422797 0.847756891298874 1.52911985496879 1.70865289967754 -1.4623311347206 -0.580540228249231 0.250521465822255
526 1.048 0.790474531515875 0.847676635331512 1.52889476407133 1.70847977114713 -1.46233589722404 -0.580970607186103 0.250790469763278
527 1.05 0.791179477875349 0.847604587113496 1.52869025955989 1.70832162230551 -1.4623416888769 -0.581361990782562 0.251036280427551
528 1.052 0.791818305861189 0.84754031645905 1.52850544503333 1.7081778637077 -1.46234840719383 -0.58171628864015 0.251259974198561
529 1.054 0.792394220156922 0.847483400874214 1.52833940991484 1.70804788416909 -1.4623559591194 -0.582035396968814 0.251462630091183
530 1.056 0.792910438356313 0.847433424873286 1.52819123084624 1.70793105283471 -1.46236426018755 -0.58232119983247 0.251645329536891
531 1.058 0.79337018963127 0.847389979322948 1.52805997300734 1.70782672114435 -1.46237323371983 -0.582575570339205 0.25180915617816
532 1.06 0.793776713478906 0.847352660815312 1.52794469136149 1.7077342246939 -1.46238281006298 -0.582800371774751 0.251955195672332
533 1.062 0.794133258545905 0.847321071071069 1.52784443182793 1.70765288499264 -1.46239292586635 -0.582997458678001 0.252084535505199
534 1.064 0.7944430815285 0.847294816373726 1.52775823238202 1.7075820111171 -1.46240352339968 -0.583168677857466 0.252198264814529
535 1.066 0.794709446146578 0.847273507035861 1.52768512408382 1.7075209012611 -1.46241454991172 -0.583315869347713 0.252297474223733
536 1.068 0.794935621134677 0.847256582178173 1.52762398533234 1.70746886022957 -1.46242568999227 -0.583440857634691 0.252383050855421
537 1.07 0.795124876564734 0.847242800968848 1.52757311565017 1.70742524724721 -1.46243558784952 -0.583545424258445 0.252455082111308
538 1.072 0.79528048963571 0.847231324436233 1.52753114513836 1.70738937777344 -1.4624435007616 -0.583631368484945 0.252514124239224
539 1.074 0.795405743378718 0.847221698745122 1.52749702203415 1.70736052646407 -1.46244927420063 -0.583700507250131 0.25256118338822
540 1.076 0.795503924901395 0.847213705083353 1.5274698878575 1.70733794208708 -1.46245311274696 -0.583754667567952 0.252597540065297
541 1.078 0.795578324099649 0.847207244726261 1.5274489817838 1.707320858976 -1.46245540452512 -0.583795680766422 0.252624614669369
542 1.08 0.795632232709233 0.847202255186311 1.52743357092267 1.70730850546845 -1.46245659303338 -0.58382537835427 0.252643869376861
543 1.082 0.795668943607795 0.847198653344747 1.52742290313086 1.70730010975261 -1.46245709017542 -0.583845589308781 0.252656741614279
544 1.084 0.795691750307612 0.847196301672216 1.52741617913159 1.70729490350484 -1.46245722458809 -0.583858138579516 0.252664604579035
545 1.086 0.79570394660047 0.847194993819697 1.52741254083593 1.70729212367106 -1.4624572196004 -0.583864846606945 0.25266875045968
546 1.088 0.79570882633024 0.84719445593062 1.52741107280446 1.70729101272849 -1.4624571952486 -0.583867529655005 0.252670392078664
547 1.09 0.795709683276719 0.847194360012352 1.52741081376797 1.70729081775968 -1.4624571887431 -0.583868000753386 0.252670678660393

View File

@ -1,169 +1,547 @@
t,px,py,pz,vx,vy,vz,ax,ay,az,speed,acc t,px,py,pz,vx,vy,vz,ax,ay,az,speed,acc
0,0.559809314390095,-0.292914056655931,0.00429163619695835,0,0,0,0.0499999733977186,5.51156342787351e-08,4.43482056633471e-08,0,0.0499999733977686 0,0.559809314390095,-0.292914056655931,0.00429163619695835,0,0,0,-2.63539190470397e-08,1.86795023893183e-08,0.0499999791552658,0,0.0499999791552762
0.002,0.559809314390095,-0.292914056655931,0.00429163619695835,9.99999467954371e-05,1.1023126855747e-10,8.86964113266941e-11,0.124999924931701,4.50216253167213e-07,3.45509211518991e-07,9.99999467955372e-05,0.12499992493299 0.002,0.559809314390095,-0.292914056655931,0.00429163619695835,-5.27078380940793e-11,3.73590047786365e-11,9.99999583105315e-05,-2.55427623496729e-07,1.76723219391661e-07,0.124999884896886,9.99999583105524e-05,0.124999884897271
0.004,0.559809714389882,-0.29291405665549,0.00429163619731314,0.000499999699726805,1.80086501266885e-09,1.38203684607596e-09,0.299999780524474,2.51783663363092e-06,1.90865379057215e-06,0.000499999699731958,0.299999780541111 0.004,0.559809314389884,-0.292914056655782,0.0042920361967916,-1.02171049398692e-09,7.06892877566645e-10,0.000499999539587542,-1.48488860096663e-06,1.02245295563463e-06,0.299999433996979,0.000499999539589086,0.299999434002397
0.006,0.559811314388894,-0.292914056648728,0.0042916362024865,0.00129999906889333,1.01815778030812e-08,7.72331157361528e-09,0.49999952015517,8.36266125792129e-06,6.30987709998587e-06,0.00129999906895614,0.499999520264919 0.006,0.559809314386008,-0.292914056653104,0.0042936361951167,-5.99226224196059e-09,4.12717082731717e-09,0.00129999769429845,-5.00186697616201e-06,3.43832948224154e-06,0.499998216783697,0.00129999769431881,0.499998216820538
0.008,0.559814914386157,-0.292914056614764,0.00429163622820639,0.00249999778034748,3.5251510044354e-08,2.66215452460195e-08,0.699999088221714,2.04570457795761e-05,1.54041571165386e-05,0.00249999778073776,0.699999088690129 0.008,0.559809314365915,-0.292914056639273,0.00429723618756879,-2.10291783986349e-08,1.44602108065328e-08,0.00249999240672233,-1.23088275683081e-05,8.45479589117737e-06,0.699995739690193,0.00249999240685259,0.699995739849473
0.01,0.559821314380015,-0.292914056507722,0.00429163630897268,0.00409999542178019,9.20097609213855e-08,6.93399400397698e-08,0.899998415099246,4.13012367361798e-05,3.10682677501228e-05,0.00409999542339895,0.899998416583154 0.01,0.559809314301891,-0.292914056595263,0.00430363616474359,-5.52275725151929e-08,3.79463543920266e-08,0.00409998065305922,-2.49193027324068e-05,1.71093902934238e-05,0.899991498596285,0.00409998065360679,0.899991499103903
0.012,0.559831314367845,-0.292914056246725,0.00429163650556615,0.00609999144074447,2.00456456989073e-07,1.50894616246511e-07,1.09999742960165,7.33957374043914e-05,5.51777738083681e-05,0.00609999144590447,1.09999743343417 0.012,0.559809314145005,-0.292914056487488,0.00431363611018103,-1.20706389328262e-07,8.28977719802282e-08,0.00609995840110747,-4.4341134930459e-05,3.04341309098621e-05,1.0999849891823,0.00609995840286503,1.09998499049703
0.014,0.559845714345778,-0.292914055705896,0.00429163691255115,0.00849998514018679,3.85592710538951e-07,2.90051035273242e-07,1.2999960579893,0.000119240478602123,8.96055313281962e-05,0.0084999851538816,1.29999606654604 0.014,0.559809313819066,-0.292914056263672,0.00432803599834802,-2.32592112237029e-07,1.59682878031475e-07,0.00849992060978841,-7.20702525436323e-05,4.94503847592309e-05,1.29997570688222,0.00849992061447067,1.29997570982053
0.016,0.559865314308405,-0.292914054704354,0.00429163766577029,0.0112999756727017,6.77418371397564e-07,5.09316741559296e-07,1.49999422298374,0.000181333153354002,0.000136219124521886,0.0112999757044849,1.4999942401296 0.016,0.559809313214636,-0.292914055848756,0.00434763579262018,-4.08987399502791e-07,2.80699311017152e-07,0.0112998612286363,-0.00010958457058452,7.51633512374726e-05,1.49996314679785,0.0112998612395242,1.4999631526841
0.018,0.559890914248469,-0.292914052996222,0.00429163894981811,0.0144999620321218,1.11092532395496e-06,8.34927533360785e-07,1.69999184224112,0.00026216611173635,0.000196876992139549,0.0144999620987171,1.69999187385645 0.018,0.559809312183116,-0.292914055140874,0.00437323544326257,-6.70930394575108e-07,4.60336282981366e-07,0.0144997731969798,-0.000158344372336305,0.000108560615358355,1.69994680364674,0.0144997732198097,1.69994681448777
0.02,0.559923314156534,-0.292914050260653,0.00429164100548042,0.0180999430416662,1.72608281834297e-06,1.29682471011749e-06,1.8999888267146,0.000364221840187806,0.000273423240645942,0.0180999431704267,1.89998888129856 0.02,0.559809310530915,-0.292914054007411,0.0044056348854081,-1.04236488884801e-06,7.14941772450572e-07,0.0180996484432233,-0.000219812813784248,0.000150624648170838,1.89992617181771,0.0180996484873586,1.89992619050408
0.022,0.559963314020635,-0.292914046091891,0.00429164413711695,0.0220999173389802,2.56781268470618e-06,1.92862049594455e-06,2.09998507891967,0.000489967604683227,0.000367681445186118,0.0220999175723123,2.09998516826742 0.022,0.559809308013656,-0.292914052281107,0.00444563403703546,-1.5501816497121e-06,1.06283487566472e-06,0.0220994778842506,-0.000295522363524813,0.000202376244234914,2.09990074540641,0.0220994779641774,2.099900775953
0.024,0.56001171382589,-0.292914039989402,0.0042916487199624,0.0264998833573449,3.68595323707588e-06,2.76755049086197e-06,2.29998049072754,0.000641850097377049,0.000481448277078743,0.0264998837582067,2.29998063067742 0.024,0.559809304330188,-0.292914049756072,0.0044940327969451,-2.22445434294727e-06,1.52444674939023e-06,0.0264992514248489,-0.000387126351808486,0.000264907408509262,2.29987001800109,0.0264992515620629,2.29987006583918
0.026,0.560069313554065,-0.292914031348078,0.00429165520731892,0.0312998393018904,5.13521307421438e-06,3.85441360425953e-06,2.49997494087411,0.000822292078178631,0.000616488269288006,0.0312998399604707,2.49997515212063 0.026,0.559809299115839,-0.29291404618332,0.00455163104273486,-3.09868705694605e-06,2.12246450970177e-06,0.031298957956255,-0.000496138317929162,0.000339199945909029,2.49983348153334,0.0312989581816094,2.49983355378012
0.028,0.560136913183097,-0.29291401944855,0.00429166413761682,0.0364997831208413,6.9751215497904e-06,5.23350356801399e-06,2.69996829273255,0.00103369430376476,0.000774532239559976,0.0364997841625171,2.69996860170359 0.028,0.55980929193544,-0.292914041266214,0.00461922862877012,-4.20900761466391e-06,2.88124653302635e-06,0.0364985853509823,-0.000623858811832355,0.000426072475911975,2.69979062634834,0.0364985857073979,2.69979073204868
0.03,0.560215312686548,-0.292914003447592,0.00429167614133319,0.0420997124728206,9.26999028927344e-06,6.95254256249944e-06,2.89996039135043,0.0012784471016547,0.000957282728780704,0.0420997140674938,2.89996083115247 0.03,0.559809282279809,-0.292914034658334,0.00469762538413879,-5.59412230427547e-06,3.82675441334967e-06,0.0420981204616484,-0.000771733545124052,0.000526422933022629,2.89974094256316,0.0420981210072577,2.89974109304104
0.032,0.560305312032989,-0.292913982368589,0.00429169194778707,0.048099624686243,1.20889099564092e-05,9.06263448313681e-06,3.09995106013982,0.00155895799394678,0.00116643122678034,0.0480996270591626,3.09995167158681 0.032,0.55980926955895,-0.292914025959196,0.00478762111061672,-7.29594179516013e-06,4.98693826511686e-06,0.048097549121235,-0.00094130906541645,0.000641194729256166,3.09968391953071,0.04809754993313,3.09968412877678
0.034,0.560407711185293,-0.292913955091952,0.00429171239187112,0.0544995167133799,1.55058222650606e-05,1.16182674696208e-05,3.29994009783812,0.00187770390208674,0.00140369367344906,0.0544995201575815,3.29994093059978 0.034,0.559809253096041,-0.292914014710581,0.00489001558062373,-9.35935856594127e-06,6.39153333037434e-06,0.0544968561397712,-0.00113406957436002,0.000771261061960348,3.2996190451268,0.0544968573182731,3.29961933015324
0.036,0.560523310099842,-0.2929139203453,0.00429173842085695,0.0612993850775955,1.95997255647562e-05,1.4677409176933e-05,3.49992727462916,0.00223731853876696,0.00167087221576017,0.0612993899681467,3.49992838856759 0.036,0.559809232121516,-0.292914000393063,0.0050056085351758,-1.18322200926002e-05,8.07198251295826e-06,0.0612960253017422,-0.00135149165469972,0.000917458508470358,3.4995458059097,0.0612960269752465,3.49954618713913
0.038,0.560652908725604,-0.29291387669305,0.00429177110150783,0.0684992258118965,2.44550964201284e-05,1.83017563326615e-05,3.69991232788274,0.00264072870168052,0.00196995390139287,0.0684992326222361,3.69991379469646 0.038,0.559809205767161,-0.292913982422651,0.0051351996818307,-1.47653251847401e-05,1.00613673642558e-05,0.0684950393634101,-0.00159505035568497,0.00108058697059765,3.69946368715748,0.0684950416938411,3.69946418883203
0.04,0.56079730700309,-0.292913822524914,0.00429181162788228,0.0760990343891265,3.01626403714783e-05,2.25572247825045e-05,3.89989495749864,0.00309135651105352,0.0023032591398367,0.0760990437099621,3.89989686286844 0.04,0.559809173060215,-0.292913960147593,0.00527958869262944,-1.82124215153401e-05,1.23943303953489e-05,0.0760938800503721,-0.00186621951225873,0.00126140530312679,3.89937217291219,0.0760938832392732,3.89937282351926
0.042,0.56095730486316,-0.292913756042488,0.00429186133040696,0.0840988056418911,3.68205224643425e-05,2.75147928920083e-05,4.09987482032081,0.00359332217453322,0.00267359079580281,0.0840988182033926,4.09987726674257 0.042,0.559809132917475,-0.29291393284533,0.00543957520203218,-2.22302032337751e-05,1.51069885767629e-05,0.0840925280550588,-0.00216647180056872,0.00146062667516489,4.09927074607359,0.0840925323503454,4.09927157878629
0.044,0.561133702225657,-0.292913675242824,0.00429192168705385,0.0924985336704097,4.45359290696112e-05,3.32515879657158e-05,4.29985152399642,0.00414943474719153,0.00308271395389747,0.0924985503686031,4.29985463118794 0.044,0.559809084139403,-0.292913899719639,0.00561595880484968,-2.6878308717615e-05,1.82368370960084e-05,0.0924909630346664,-0.00248362769933452,0.00166967401363238,4.27872692292541,0.0924909687380651,4.27872796952373
0.046,0.561327298997842,-0.292913577898772,0.00429199433675882,0.101298211737877,5.34182614531086e-05,3.98456487075982e-05,4.49982462345094,0.00476023793993806,0.00353062841896428,0.101298233659221,4.4998285264016 0.046,0.55980902540424,-0.292913859897981,0.00580953905417085,-3.21647140311132e-05,2.17856846312925e-05,0.10120743574676,-0.00274913172781943,0.00184189907423415,4.34426804258366,0.101207443202659,4.34426930290136
0.048,0.561538895072609,-0.292913461569778,0.00429208106964868,0.110497832164214,6.35768808293635e-05,4.73741016415729e-05,4.69979361739091,0.00542759788502155,0.0040182681800005,0.110497860609679,4.6997984692289 0.048,0.559808955480546,-0.2929138125769,0.00602078854783672,-3.78748356288927e-05,2.5604433392945e-05,0.109868035205001,-0.00290092068422342,0.00193541701762334,4.23678787821439,0.109868044716822,4.23678931340281
0.05,0.561769290326499,-0.292913323591249,0.00429218383316539,0.12009738620744,7.51286529931949e-05,5.59187214276002e-05,4.89975793999813,0.00615535560369306,0.00454798990395105,0.120097422724541,4.89976391708718 0.05,0.559808873904898,-0.292913757480248,0.00624901119499086,-4.37683967680069e-05,2.95273527017858e-05,0.118154587259618,-0.0029728832104392,0.00197356798958825,4.04326623543778,0.118154599055762,4.04326781003144
0.052,0.562019284617439,-0.292913161055166,0.00429230474453439,0.130096863924206,8.81983032441357e-05,6.55660612573771e-05,5.0997169524225,0.00694700196673946,0.00512181379860171,0.130096910342877,5.09972425613762 0.052,0.559808780406959,-0.292913694467489,0.00649340689687519,-4.97663684706495e-05,3.3498705351298e-05,0.126041100146752,-0.00301010266018364,0.00198718631133632,3.84325163507032,0.126041114423264,3.84325332759865
0.054,0.562289677782195,-0.292912970798036,0.00429244609741042,0.140496254017131,0.000102916660860153,7.6405976622007e-05,5.29966993568358,0.00780562950733475,0.00574138026530889,0.140496312487404,5.29967879389759 0.054,0.559808674839424,-0.292913623485426,0.00675317559557786,-5.58088074087415e-05,3.74760979471311e-05,0.133527593799899,-0.00301813474212764,0.00198024868724999,3.64324675648873,0.133527610721797,3.64324854480007
0.056,0.562581269633507,-0.292912749388523,0.00429261036844088,0.15129554366694,0.000119420821273475,8.85315823186127e-05,5.49961608288517,0.00873441521193062,0.00640830756949011,0.151295616700051,5.49962675238459 0.056,0.55980855717173,-0.292913544563098,0.00702751727207479,-6.183890743916e-05,4.1419700100298e-05,0.140614087172707,-0.00299854609198124,0.00195404343747429,3.44325110939336,0.140614106870739,3.44325296949019
0.058,0.562894859956863,-0.292912493114751,0.00429280022373969,0.162494718348671,0.000137854321707875,0.000102039206899967,5.69955449053471,0.00973662749731428,0.00712419062631752,0.162494808861784,5.69956725958923 0.058,0.559808427483794,-0.292913457806626,0.00731563194426869,-6.78029917766664e-05,4.52922716970283e-05,0.147300598237473,-0.00295289934171272,0.00190987015785682,3.2432642025357,0.147300620805728,3.24326610913568
0.06,0.563231248506902,-0.292912197971236,0.00429301852526848,0.174093761629079,0.000158367331262732,0.000117028344823883,5.89948414886353,0.0108156336560416,0.00789059960946968,0.174093872993876,5.89949933995976 0.06,0.559808285959763,-0.292913363394011,0.00761671966502468,-7.36505048060109e-05,4.90591807317253e-05,0.15358714398285,-0.00288275330689868,0.00184903496680544,3.04328554332714,0.153587169477169,3.04328747038806
0.062,0.563591235003379,-0.292911859645426,0.00429326833711899,0.186092654944125,0.000181116856332042,0.000133601605337846,6.09940393155733,0.0119749074718733,0.00870907857723062,0.186092791039465,6.09942190430828 0.062,0.559808132881775,-0.292913261569903,0.00792998052020009,-7.93340050042612e-05,5.268841156425e-05,0.159473740410781,-0.00278966325734097,0.0017728460054156,2.84331463755536,0.159473768847915,2.84331655876383
0.064,0.563975619126678,-0.292911473503811,0.00429355293168983,0.198491377355309,0.000206266961150225,0.000151864659132805,6.29931258462611,0.0132180370121526,0.00958114429114307,0.198491542624217,6.29933373886932 0.064,0.559807968623743,-0.292913152640365,0.00825461462666781,-8.48091578353748e-05,5.61505647533877e-05,0.164960402533071,-0.00267518104890562,0.00168260933658404,2.64335098915363,0.164960433890531,2.64335287837763
0.066,0.564385200512801,-0.292911034577581,0.00429387579575552,0.21128990528263,0.000233989004380652,0.000171926182502419,6.49920871424735,0.0145487329163141,0.0105082850034369,0.211290104793881,6.49923349334611 0.066,0.559807793645143,-0.292913036967644,0.00858982213033238,-9.00347291998837e-05,5.94188489105862e-05,0.170047144367396,-0.00254085526230074,0.00157962513208653,2.44339409995359,0.170047178583939,2.44339593165927
0.068,0.564820778747809,-0.292910537547793,0.00429424063641984,0.224488212212298,0.000264461892815482,0.000193897799146553,6.69909077360974,0.0159708370313371,0.0114919593069071,0.224488451726861,6.69911966797334 0.068,0.559807608484826,-0.292912914964969,0.00893480320413739,-9.49725788845778e-05,6.24690652817339e-05,0.174733978932886,-0.00238823143206001,0.00146518393945305,2.24344346956561,0.174734015909591,2.24344521919969
0.07,0.56528315336165,-0.29290997673001,0.00429465138695211,0.238086268377069,0.000297872352506001,0.000217894019730047,6.89895704867465,0.0174883313941443,0.0125335951504587,0.238086554419732,6.89899059951526 0.07,0.559807413754828,-0.292912787091383,0.00928875804606392,-9.95876549281237e-05,6.52795846683984e-05,0.179020918245658,-0.0022188522755262,0.00134056322639853,2.04349859530758,0.179020957847521,2.04350023964747
0.0720000000000001,0.565773123821317,-0.292909346058383,0.00429511221249876,0.252084040406997,0.000334415218392059,0.000244032179748388,7.0988056425289,0.0191053476789049,0.0136345891296047,0.252084380343486,7.09884444587503 0.0720000000000001,0.559807210134206,-0.29291265384663,0.00965088687712003,-0.000103847987986683,6.7831318187328e-05,0.182907973314116,-0.00203425765121778,0.00120702442832354,1.84355897213297,0.182908015372126,1.84356048960812
0.0740000000000001,0.566291489523278,-0.292908639069136,0.0042956275156711,0.266481490947184,0.000374293743221621,0.000272432376248466,7.29863445856486,0.0208261771508788,0.014796305796913,0.266481893067128,7.29867916955324 0.0740000000000001,0.559806998362876,-0.29291251576611,0.0100203899393204,-0.000107724685532995,7.01076823816926e-05,0.18639515413419,-0.00183598489189585,0.00106581003744832,1.64362409268547,0.186395198447824,1.64362546367708
0.0760000000000001,0.566839049785106,-0.29290784888341,0.00429620194200375,0.281278578241256,0.000417719926995574,0.00030321740293604,7.49844118208552,0.0226552812308822,0.0160200773246035,0.281279051847366,7.49849251955626 0.0760000000000001,0.559806779235464,-0.292912373415901,0.0103964674936568,-0.000111191927554266,7.20945583371212e-05,0.189482469684858,-0.0016255689225253,0.000918140882766315,1.44369344735103,0.189482516024944,1.44369465448249
0.0780000000000001,0.567416603836243,-0.292906968189428,0.00429684038528284,0.296475255675527,0.000464914868145149,0.00033651268554688,7.69326379170681,0.0245802433615494,0.0172948895291874,0.296475811179413,7.6933224987878 0.0780000000000001,0.559806553595166,-0.292912227387877,0.0107783198180598,-0.000114226961223096,7.37802459127578e-05,0.192169927923594,-0.00140454227415265,0.000765213854087009,1.24376652437842,0.192169976035495,1.24376755282312
0.0800000000000001,0.568024950807808,-0.292905989223938,0.00429754799274594,0.312051633408083,0.000516040900441772,0.00037239696105279,7.80657881532115,0.0263271762758476,0.0184215440852953,0.312052282302758,7.80664494346439 0.0800000000000001,0.559806322327619,-0.292912078294917,0.0111651472053512,-0.000116810096650877,7.51554137534693e-05,0.194457535782372,-0.00117443541003403,0.000608199858531666,1.04384281008479,0.19445758538943,1.04384364795276
0.0820000000000001,0.568664810369875,-0.292904904025827,0.00429832997312705,0.327701570936811,0.00057022357324854,0.000410198861888061,7.74832860281349,0.027525988616911,0.0191341843740894,0.327702323782551,7.74840112115 0.0820000000000001,0.559806086354779,-0.292911926766222,0.0115561499611893,-0.000118924702863232,7.62130453468845e-05,0.196345299163934,-0.000936776670124039,0.000448241926215287,0.843921789023954,0.196345349971136,0.843922427987754
0.0840000000000001,0.569335757091555,-0.292903708329645,0.00429918878819349,0.343044947819337,0.000626144854909416,0.000448933698549147,7.57158478418422,0.0282752689630127,0.0195077700581789,0.343045813009308,7.57166270960464 0.0840000000000001,0.559805846628808,-0.292911773442736,0.0119505284020069,-0.000120557203331373,7.69483814583304e-05,0.197833222938468,-0.000693092486181434,0.000286453628178806,0.644002944286473,0.197833274636281,0.644003380955815
0.0860000000000001,0.570036990161153,-0.292902399446407,0.00430012570792125,0.357987910073548,0.000683324649100591,0.000488229942120777,7.37137318761875,0.0288619774503617,0.0197522572308733,0.357988895162796,7.37145615442109 0.0860000000000001,0.559805604125966,-0.292911618972696,0.0123474828529432,-0.000121697072807958,7.73588598595997e-05,0.198921310941079,-0.000444907499730362,0.000123917771877036,0.444085757754682,0.198921363209406,0.444085997909017
0.0880000000000001,0.570767708731849,-0.292900975031048,0.00430114170796198,0.372530440569812,0.000741592764710863,0.000527942727472641,7.17115326223649,0.0293644548468585,0.0199254662439779,0.372531552803908,7.17124106455072 0.0880000000000001,0.559805359840516,-0.292911464007296,0.0127462136457712,-0.000122336833330294,7.74440525458386e-05,0.199609565969486,-0.000196202408486723,-3.67662289502135e-05,0.2461099028149,0.199609618481697,0.246109983768843
0.0900000000000001,0.571527111923432,-0.292899433075348,0.00430223747883114,0.386672523122494,0.000800782468488025,0.000567931807096688,6.97092551914246,0.0297843931879038,0.0200297169969734,0.386673769393548,6.97101792373769 0.0900000000000001,0.559805114778632,-0.292911309196486,0.0131459211168211,-0.000122481882441905,7.72117949437989e-05,0.199905750552339,4.69950467429924e-06,-0.00016523175189187,0.0870502566792038,0.199905802985723,0.0870504136206856
0.0920000000000001,0.572314398824339,-0.292897771901174,0.00430341343519036,0.400414142646382,0.000860730337462478,0.000608061595460535,6.77069054578342,0.0301234165424324,0.0200673501791343,0.400415529452661,6.77078729436455 0.0920000000000001,0.559804869912987,-0.292911155160117,0.0135458366479806,-0.000122318035311597,7.67831255382711e-05,0.199957766996203,9.82884745814871e-05,-0.000224601264670054,0.0130049113153743,0.199957819150585,0.0130072220198272
0.0940000000000001,0.573128768494017,-0.292895990153998,0.00430466972521298,0.413755285305628,0.000921276134657755,0.000648201207813225,6.57044900202045,0.0303830922920855,0.0200407243708053,0.413756818714645,6.57054981345413 0.0940000000000001,0.559804625506491,-0.292911002063983,0.0139457521848059,-0.000122088728543579,7.63133898851186e-05,0.199957770197601,0.000114519255189904,-0.000234676850868753,1.78492637337157e-06,0.199957822032016,0.000261134199416859
0.0960000000000001,0.573969419965562,-0.292894086796636,0.00430600624002161,0.426695938654464,0.00098226270663082,0.000688224492943756,6.37020161622925,0.0305649416054709,0.0199522131221277,0.426697624269449,6.3703061887066 0.0960000000000001,0.559804381558072,-0.292910849906557,0.014345667728771,-0.000121859958290837,7.58444181347961e-05,0.199957774135909,0.000114251323679593,-0.000234295319256894,2.15339465009512e-06,0.199957825652342,0.000260676617088583
0.0980000000000001,0.574835552248635,-0.292892061103172,0.00430742262318476,0.439236091770545,0.00104353590107964,0.000728010060301736,6.16994918151148,0.0306704492220033,0.0198042019823249,0.439237934700189,6.17005719465434 0.0980000000000001,0.559804138066658,-0.292910698686311,0.0147455832813496,-0.000121631723248861,7.53762086080911e-05,0.199957778811179,0.000113984127692035,-0.000233914620312303,2.52190282545861e-06,0.199957830011604,0.000260220658202657
0.1,0.575726364332644,-0.292889912653031,0.00430891828026282,0.45137573538051,0.00110494450351883,0.000767441300873056,5.96969255203111,0.0307010727049194,0.0195990853390365,0.451377740211901,5.96980366894817 0.1,0.559803895031179,-0.292910548401723,0.0151454988440157,-0.000121404021780069,7.49087596535469e-05,0.19995778422352,0.000113717694982807,-0.000233534701993276,2.89047431822897e-06,0.199957835109901,0.000259766291171652
0.102,0.576641055190157,-0.292887641325158,0.00431049238838825,0.463114861978669,0.00116634019189932,0.000806406401657882,5.76943263956573,0.0306582507089703,0.0193392632533151,0.463117032753331,5.76954650886239 0.102,0.559803652450571,-0.292910399051272,0.0155454144182437,-0.000121176852468929,7.4442069800118e-05,0.199957790373076,0.000113451942285181,-0.000233155553891473,3.25909698534188e-06,0.199957840947372,0.000259313472908523
0.104,0.577578823780559,-0.292885247292264,0.00431214390586945,0.474453465938773,0.00122757750635471,0.000844798353886316,5.56917040976655,0.0305434104778956,0.0190271381263554,0.474455806131727,5.56928666751211 0.104,0.55980341032377,-0.292910250633443,0.015945330005508,-0.000120950214010929,7.3976137437981e-05,0.199957797259908,0.000113186841843582,-0.000232777203762468,3.62776302054168e-06,0.199957847524066,0.000258862218994065
0.106,0.578538869053912,-0.292882731015132,0.0043138715818038,0.485391543617735,0.0012885138338109,0.000882514954163304,5.36890687867497,0.0303579748943405,0.0186651113480082,0.485394056119512,5.36902515033267 0.106,0.559803168649715,-0.292910103146723,0.0163452456072833,-0.000120724105101555,7.35109609850681e-05,0.199957804884129,0.000112922435291374,-0.0002323996099729,3.99648543425446e-06,0.199957854840089,0.000258412513248713
0.108,0.57952038995503,-0.292880093236928,0.00431567396568611,0.495929093453473,0.00134900940593208,0.000919458799278349,5.1686431093087,0.0301033685791429,0.0182555799574379,0.495931780554991,5.16876301163089 0.108,0.559802927427349,-0.292909956589599,0.0167451612250445,-0.000120498524269763,7.30465389980894e-05,0.19995781324585,0.000112658736506344,-0.000232022758644978,4.36525815494803e-06,0.199957862895544,0.000257964352031809
0.11,0.580522585427726,-0.292877334977508,0.00431754941700091,0.50606611605497,0.00140892730812747,0.000955537273993056,4.96838020799805,0.029781023171832,0.0178009331320422,0.506068979435219,4.96850135088925 0.11,0.559802686655618,-0.292909810960567,0.0171450768602667,-0.00012027347015553,7.25828699504882e-05,0.199957822345161,0.000112395703855128,-0.000231646635900917,4.73407077428156e-06,0.199957871690513,0.000257517707343393
0.112,0.58154465441925,-0.292874457527696,0.00431949611478208,0.515802614285465,0.0014681334986194,0.000990662531806518,4.76811932086096,0.029392382049076,0.0173035487015249,0.515805655001903,4.76824130921326 0.112,0.559802446333469,-0.29290966625812,0.0175449925144252,-0.000120048941454343,7.21199524544857e-05,0.199957832182133,0.000112133330398834,-0.00023127124867961,5.1029180880846e-06,0.199957881225057,0.000257072585129518
0.114,0.582585795884868,-0.292871462443514,0.00432151206712814,0.525138593338414,0.00152649683632378,0.00102475146879916,4.5678616301531,0.0289389044186294,0.0167657896784495,0.525141811820019,4.56798406565932 0.114,0.559802206459852,-0.292909522480757,0.0179449081889952,-0.000119824936833934,7.16577849557697e-05,0.199957842756834,0.000111871609198566,-0.000230896607389397,5.47182351512409e-06,0.199957891499236,0.000256628995051593
0.116,0.583645208792603,-0.292868351540351,0.00432359512065728,0.534074060806077,0.00158388911629392,0.00105772569052032,4.36760835072214,0.0284220686361247,0.0161900008278232,0.534077456848969,4.36773083367212 0.116,0.559801967033721,-0.29290937962698,0.0183448238854525,-0.000119601455017548,7.11963660249281e-05,0.199957854069427,0.000111610554132113,-0.000230522646110787,5.840770575527e-06,0.199957902513206,0.000256186886402314
0.118,0.584722092128092,-0.292865126887049,0.00432574296989022,0.542609026741303,0.00164018511086827,0.00108951147211045,4.16736072635787,0.0278433749043016,0.0155785052566303,0.542612599506858,4.1674828574263 0.118,0.559801728054032,-0.292909237695293,0.0187447396052729,-0.000119378494617406,7.07356943713266e-05,0.199957866119916,0.000111350151321687,-0.000230149364843779,6.20973367865262e-06,0.199957914266962,0.000255746255358152
0.12,0.585815644899568,-0.292861790799907,0.00432795316654572,0.550743503711509,0.00169526261591113,0.00112003971154684,3.96712002594806,0.0272043475697814,0.0149336010406633,0.550747251726889,3.96724140798678 0.12,0.559801489519743,-0.292909096684202,0.0191446553499322,-0.000119156054412262,7.0275768565553e-05,0.199957878908361,0.000111090400767289,-0.00022977680175229,6.57873061582492e-06,0.199957926760556,0.00025530713946669
0.122,0.586925066142938,-0.292858345836585,0.0043302231287364,0.558477506845095,0.0017490025011474,0.0011492458762731,3.76688753972501,0.0265065367745247,0.0142575579129358,0.558481428006112,3.76700777957585 0.122,0.559801251429814,-0.292908956592218,0.0195445711209064,-0.000118934133014337,6.98165871643174e-05,0.199957892434838,0.000110831288591024,-0.000229404925611237,6.94777022719472e-06,0.199957939994055,0.000254869507663381
0.124,0.588049554926949,-0.292854794789903,0.00433255015005081,0.565811053870409,0.00180128876300923,0.00117706994319858,3.53708533862344,0.0255557283494761,0.0134253458289682,0.565815145446639,3.53720313635886 0.124,0.559801013783211,-0.292908817417854,0.0199444869196715,-0.000118712729257897,6.9358148863108e-05,0.199957906699442,0.000110572759281952,-0.000229033698256826,7.31685996513411e-06,0.199957953967547,0.000254433304565603
0.126,0.58918831035842,-0.292851140681533,0.0043349314085092,0.572625848199589,0.0018512254145453,0.00120294725958897,3.2094859855123,0.0238896577207921,0.0121411166884012,0.572630104119529,3.20959785855804 0.126,0.559800776578897,-0.292908679159623,0.0203444027477041,-0.000118491841977209,6.89004523712901e-05,0.199957921702278,0.000110314882229118,-0.000228663116219666,7.68595716238443e-06,0.199957968681129,0.000253998558850271
0.128,0.590340058319747,-0.292847389888244,0.00433736193908917,0.578648997812458,0.0018968473938924,0.00122563440995219,2.78101720087942,0.0214605917515914,0.0103842094307031,0.578653404793495,2.7811193898125 0.128,0.559800539815843,-0.292908541816044,0.0207443186064806,-0.000118271469728981,6.84434963982294e-05,0.199957937443271,0.000110057664370993,-0.000228293169091178,8.05507032602958e-06,0.199957984134717,0.000253565267137376
0.13,0.59150290634967,-0.292843553291958,0.00433983394614901,0.583749917003106,0.00193706778155167,0.00124448409731179,2.33201049612552,0.0187851663079053,0.00849918868964238,0.583754457433425,2.33210164287949 0.13,0.559800303493018,-0.292908405385637,0.0211442344974772,-0.000118051611319725,6.79872796949254e-05,0.199957953922559,0.00010980104325764,-0.00022792387421866,8.42422789859575e-06,0.199958000328443,0.000253133421647552
0.132,0.59267505798776,-0.292839641617118,0.00434233987547841,0.58797703979696,0.00197198805912402,0.00125963116471076,1.90736690201809,0.0161709208801319,0.00668790649943629,0.587981695919161,1.90744717507184 0.132,0.559800067609397,-0.292908269866925,0.0215441504221709,-0.00011783226555595,6.75318009013547e-05,0.199957971140183,0.000109544998072586,-0.000227555214254993,8.79339396436806e-06,0.199958017262337,0.000252702999417837
0.134,0.593854814508858,-0.292835665339721,0.00434487247080785,0.591379384611179,0.0020017514650722,0.00127123572330953,1.50724616745923,0.0136369137024306,0.00496156059032887,0.591384138773005,1.50731602254449 0.134,0.559799832163956,-0.292908135258434,0.021944066382038,-0.000117613431327435,6.70770588379054e-05,0.199957989096135,0.000109289549632407,-0.00022718714062786,9.1625812839724e-06,0.199958034936387,0.000252273968972827
0.136,0.595040575526204,-0.292831634611258,0.00434742481837165,0.594006024466797,0.00202653571393374,0.00127947740707207,1.13156082520716,0.0111986669174002,0.00332859781404515,0.594010859338686,1.13162113397004 0.136,0.559799597155672,-0.29290800155869,0.0223439823785554,-0.000117395107357421,6.66230523388433e-05,0.199958007790508,0.000109034739570468,-0.00022681966721505,9.53179722651409e-06,0.199958053350674,0.000251846363934668
0.138,0.596230838606725,-0.292827559196865,0.00434999038043614,0.595905627912007,0.0020465461327418,0.00128455011456571,0.780010843692835,0.00886839884514655,0.00179496988626793,0.595910526670971,0.780063322233123 0.138,0.559799362583527,-0.292907868766224,0.0227438984132,-0.000117177292369153,6.61697801690452e-05,0.199958027223324,0.000108780512375617,-0.00022645279748601,9.90101403641751e-06,0.199958072505216,0.000251420165143711
0.14,0.597424198037852,-0.292823448426727,0.00435256301882991,0.597126067841569,0.00206200930931433,0.00128665728661714,0.452116556103055,0.00665529550220034,0.000364406937784778,0.597131014322065,0.45216568429407 0.14,0.559799128446503,-0.292907736879569,0.0231438144874487,-0.000116959985307918,6.57172411488993e-05,0.199958047394564,0.000108526833353384,-0.000226086517562951,1.02702395199383e-05,0.199958092399984,0.00025099534816656
0.142,0.598619342878091,-0.292819311159628,0.00435513700958261,0.59771409413642,0.0020731673147506,0.00128600774231685,0.147249351892253,0.00456580540389439,-0.000961303344218511,0.597719072949784,0.147323257891599 0.142,0.559798894743585,-0.29290760589726,0.0235437306027782,-0.000116743185035739,6.52654340987934e-05,0.199958068304282,0.000108273751076027,-0.000225720803159746,1.06394866875026e-05,0.199958113035026,0.000250571915481619
0.144,0.599815054414398,-0.292815155757468,0.00435770704979918,0.597715065249138,0.0020802725309299,0.00128281207324027,-0.135340179480137,0.00260394424772547,-0.00218204085442736,0.597720061873783,0.135382812829588 0.144,0.559798661473763,-0.292907475817833,0.0239436467606658,-0.000116526890303614,6.48143579362603e-05,0.199958089952511,0.000108021272482439,-0.000225355636929159,1.10087173751938e-05,0.199958134410365,0.000250149855612029
0.146,0.601010203139088,-0.292810990069504,0.00436026825787557,0.597172733418499,0.0020835830917415,0.00127727957889914,-0.396496804250246,0.000771599058951854,-0.00329908979215115,0.597177734263548,0.396511279964671 0.146,0.559798428636024,-0.292907346639828,0.0243435629625883,-0.000116311099945809,6.43640115510768e-05,0.199958112339152,0.000107769335122576,-0.000224991025810084,1.13779502278199e-05,0.199958156525896,0.000249729151360474
0.148,0.602203745348072,-0.292806821425101,0.00436281616811478,0.596129078032137,0.00208335892716571,0.00126961571407166,-0.63713793364839,-0.000931176580287739,-0.00431489211808605,0.596134070477377,0.637153224803543 0.148,0.559798196229363,-0.292907218361787,0.0247434792100224,-0.000116095812963124,6.39143938330199e-05,0.199958135464312,0.000107517952874225,-0.000224626952455287,1.17472082408754e-05,0.199958179381718,0.000249309796961668
0.15,0.603394719451216,-0.292802656633796,0.00436534672073186,0.594624181683905,0.00207985838542035,0.0012600200104268,-0.858233595635304,-0.0025058817555712,-0.00523282103672556,0.594629154099077,0.858253206540167 0.15,0.559797964252772,-0.292907090982253,0.0251433955044455,-0.000115881028134312,6.34655037412556e-05,0.199958159327985,0.000107267139615175,-0.000224263389109191,1.21164614799718e-05,0.199958202977819,0.000248891774823431
0.152,0.604582242074808,-0.292798501991559,0.00436785624815648,0.592696143649595,0.00207333540014343,0.00124868442992476,-1.06078897545159,-0.00395530648858444,-0.00605697668062954,0.592701085395994,1.06081364143546 0.152,0.55979773270525,-0.292906964499772,0.0255433118473344,-0.000115666744404663,6.30173402765832e-05,0.199958183930157,0.000107016881467636,-0.00022390035658848,1.24857069128126e-05,0.199958227314176,0.000248475100315141
0.154,0.605765504025815,-0.292794363292195,0.00437034145845155,0.590381025782099,0.00206403715946601,0.00123579210370428,-1.24582937224837,-0.00528329199833699,-0.00679200462712359,0.590385927199356,1.24585908884511 0.154,0.559797501585795,-0.292906838912892,0.0259432282401662,-0.000115452960608442,6.25699023149017e-05,0.199958209270812,0.000106767171492716,-0.000223537854893152,1.28549289268864e-05,0.199958252390765,0.000248059772386621
0.156,0.606943766177936,-0.292790245842921,0.0043727994165713,0.587712826160602,0.00205220223215008,0.00122151641141627,-1.41438739407335,-0.00649451362133568,-0.00744293712513083,0.587717678541344,1.4144218877456 0.156,0.559797270893408,-0.292906714220163,0.0263431446844176,-0.000115239675718692,6.21231888570106e-05,0.199958235349873,0.000106517974995945,-0.000223175828512056,1.3224138797896e-05,0.199958278207502,0.000247645729372072
0.158,0.608116355330457,-0.292786154483267,0.00437522752409722,0.584723476205806,0.00203805910498067,0.00120602035520376,-1.56749219931695,-0.00759428737950873,-0.00801505640676824,0.584728271760665,1.56753108717164 0.158,0.559797040627092,-0.292906590420136,0.0267430611815657,-0.000115026888708458,6.16771990008535e-05,0.199958262167368,0.000106269340549581,-0.000222814287853534,1.35933391279264e-05,0.199958304764408,0.000247233004433403
0.16,0.609282660082759,-0.292782093606502,0.00437762349799212,0.581442857363334,0.00202182508263204,0.00118945618578919,-1.70616059021189,-0.00858840009873573,-0.00851377856842666,0.581447589178527,1.70620344760933 0.16,0.559796810785853,-0.292906467511367,0.0271429777330871,-0.000114814598356494,6.12319317055964e-05,0.19995828972323,0.000106021233459153,-0.000222453222509244,1.39625143044664e-05,0.199958332061409,0.00024682157514012
0.162,0.61044212675991,-0.292778067182936,0.00437998534884038,0.577898833844958,0.00200370550458573,0.00117196524093005,-1.83138976599106,-0.00948296169714368,-0.00894455677493549,0.577903495834415,1.83143615958494 0.162,0.559796581368698,-0.292906345492409,0.0275428943404586,-0.000114602803774622,6.07873861108165e-05,0.199958318017425,0.00010577363984687,-0.000222092608193058,1.4331685581348e-05,0.199958360098463,0.000246411417576486
0.164,0.611594255418139,-0.292774078784483,0.00438231135895584,0.57411729829937,0.00198389323584347,0.00115367795868945,-1.94415154979727,-0.0102842786092738,-0.00931280186560606,0.574121885153119,1.94420105525231 0.164,0.559796352374638,-0.292906224361822,0.0279428110051568,-0.000114391503797107,6.03435612728242e-05,0.199958347049972,0.000105526594407209,-0.000221732483068893,1.47008277912031e-05,0.199958388875582,0.00024600258232959
0.166,0.612738595953108,-0.292770131609993,0.00438460006067513,0.570122227645769,0.00196256839014863,0.00113471403346763,-2.04538791484521,-0.0109987470138517,-0.00962381845395765,0.570126734776048,2.04544012684614 0.166,0.559796123802683,-0.292906104118164,0.0283427277286585,-0.000114180697396993,5.9900456178541e-05,0.199958376820736,0.000105280027751231,-0.000221372788156149,1.50699175360813e-05,0.199958418392624,0.000245594987721393
0.168,0.613874744328722,-0.292766228510923,0.00438685021508971,0.565935746639989,0.00193989824778806,0.00111518268487362,-2.13600764745189,-0.0116327639396174,-0.00988275497635493,0.565940170126308,2.13606218542807 0.168,0.559795895651848,-0.292905984759997,0.0287426445124397,-0.000113970383686102,5.94580701201996e-05,0.199958407329642,0.000105033967634505,-0.000221013485290911,1.54390025070006e-05,0.199958448649507,0.000245188616856274
0.17,0.615002338939668,-0.292762372017001,0.00438906079141463,0.561578197055961,0.00191603733439016,0.00109518301356221,-2.21688399747174,-0.012192654604698,-0.0100945658169232,0.561582533590143,2.21694050874886 0.17,0.559795667921149,-0.292905866285884,0.029142561357977,-0.000113760561526455,5.90164022373773e-05,0.199958438576746,0.000104788455690397,-0.00022065464039267,1.58080597223442e-05,0.199958479646279,0.00024478354831357
0.172,0.616121057116946,-0.292758564361585,0.00439123094714396,0.557068210650102,0.00189112762936927,0.00107480442160593,-2.28885318117461,-0.0126846143241876,-0.0102639837393226,0.557072457482114,2.28891134248924 0.172,0.559795440609602,-0.292905748694388,0.0295424782667467,-0.00011355122986334,5.85754515586289e-05,0.199958470561881,0.000104543429468862,-0.000220296236114192,1.61770449466636e-05,0.199958511382767,0.000244379739492449
0.174,0.617230611782268,-0.292754807506484,0.00439336000910105,0.552422784331263,0.00186529887709341,0.00105412707860492,-2.35271361595512,-0.0131146631367207,-0.0103955012167867,0.552426939216494,2.35277313388592 0.174,0.559795213716229,-0.292905631984078,0.0299423952402246,-0.000113342387808579,5.81352172929205e-05,0.199958503284926,0.000104298861214325,-0.000219938199597092,1.65459972112369e-05,0.199958543858841,0.000243977118017918
0.176,0.618330748254271,-0.292751103166077,0.00439544745545838,0.547657356186281,0.00183866897682239,0.00103322241673878,-2.40922577914026,-0.0134886117657273,-0.0104933592605036,0.547661417334758,2.40928638980715 0.176,0.559794987240051,-0.292905516153519,0.0303423122798864,-0.000113134034418483,5.76956987602406e-05,0.19995853674587,0.000104054806437936,-0.000219580544719155,1.69149208528729e-05,0.199958577074485,0.000243575723152896
0.178,0.619421241207013,-0.292747452830577,0.00439749289876801,0.542785881214702,0.0018113444300305,0.0010121536415629,-2.45911259656728,-0.0138120372812633,-0.0105615424392247,0.542789847242613,2.45917406483324 0.178,0.559794761180091,-0.292905401201283,0.030742229387208,-0.000112926168582827,5.72568951140439e-05,0.199958570944609,0.000103811258200803,-0.000219223306174852,1.72837889833577e-05,0.199958611029588,0.000243175584015106
0.18,0.62050189177913,-0.292743857788357,0.00439949607002463,0.537820905800012,0.00178342082769733,0.000990976246981883,-2.50306028001801,-0.0140902669948373,-0.0106037790700841,0.537824775683788,2.50312239835738 0.18,0.559794535535377,-0.292905287125939,0.0311421465636649,-0.000112718789385679,5.68188055355411e-05,0.199958605881026,0.000103568140175092,-0.000218866418044692,1.76526024700529e-05,0.199958645724024,0.0002427766112726
0.182,0.621572524830214,-0.292740319147266,0.00440145680375593,0.53277364009463,0.00175498336205115,0.000969738525282564,-2.54171954315596,-0.0143283695255847,-0.0106235454313749,0.532777413127744,2.54178213030774 0.182,0.559794310304934,-0.29290517392606,0.0315420638107321,-0.000112511896022127,5.63814294418651e-05,0.199958641555019,0.000103325507871954,-0.000218509880328676,1.80213673844909e-05,0.199958681157686,0.000242378831709076
0.184,0.622632986339508,-0.292736837854908,0.00440337502412576,0.527654027627388,0.00172610734959499,0.000948482065256383,-2.57570713703414,-0.0145311520108326,-0.010624073308596,0.527657703379961,2.57577003652909 0.184,0.559794085487793,-0.292905061600221,0.031941981129885,-0.000112305487354192,5.59447660142264e-05,0.199958677966495,0.000103083389046965,-0.000218153703435142,1.83900715836072e-05,0.199958717330473,0.000241982268260974
0.186,0.623683140940723,-0.292733414717868,0.00440525073201696,0.522470811546493,0.00169685875400782,0.00092724223204818,-2.60560765735773,-0.0147031622328708,-0.0106083601469214,0.522474389827711,2.60567073598448 0.186,0.559793861082984,-0.292904950146996,0.0323418985225981,-0.000112099562465939,5.55088146281246e-05,0.199958715115305,0.000102841707372292,-0.000217797859608515,1.8758701189614e-05,0.199958754242229,0.000241586864907055
0.188,0.624722869585694,-0.292730050419892,0.00440708399305395,0.517231596997958,0.00166729470066351,0.000906048624668698,-2.63197558438705,-0.0148486948813031,-0.010579181248041,0.517235077821281,2.63203873064685 0.188,0.559793637089543,-0.292904839564962,0.0327418159903462,-0.000111894120524703,5.50735745757924e-05,0.1999587530013,0.000102600476725723,-0.00021744236619603,1.91272601091086e-05,0.199958791892799,0.000241192646074783
0.19,0.625752067328715,-0.292726745539065,0.00440887492651564,0.511942909208945,0.00163746397448261,0.000884925507056016,-2.65533752635133,-0.014971801420155,-0.0105391033773314,0.511946292760031,2.65540064893932 0.19,0.559793413506502,-0.292904729852698,0.0331417335346033,-0.000111689160559036,5.46390451633405e-05,0.199958791624346,0.000102359704046151,-0.000217087178094877,1.94957583063426e-05,0.199958830282042,0.000240799577444712
0.192,0.62677064122253,-0.292723500563994,0.00441062369508217,0.506610246892552,0.00160740749498289,0.000863892211159372,-2.6761946458273,-0.0150763027374767,-0.0104904993069102,0.506613533499787,2.67625767216736 0.192,0.5597931903329,-0.292904621008782,0.0335416511568436,-0.000111484681708518,5.42052258634129e-05,0.199958830984333,0.000102119396272471,-0.000216732288366161,1.98641892865114e-05,0.199958869409841,0.000240407657805439
0.194,0.627778508316285,-0.292720315909085,0.00441233049536027,0.501238130625636,0.0015771587635327,0.000842963509828375,-2.69502525702958,-0.0151658041576407,-0.0104355634064634,0.501241320733164,2.69508813188488 0.194,0.559792967567776,-0.292904513031795,0.0339415688585407,-0.000111280682973946,5.37721160098758e-05,0.199958871081103,0.000101879546465788,-0.000216377707418225,2.02325326631447e-05,0.199958909276031,0.000240016894475382
0.196,0.628775593745033,-0.29271719192894,0.00441399554912149,0.495830145864434,0.00154674427835233,0.000822149957533518,-2.71228759101544,-0.0152437124693871,-0.0103763276148444,0.495833240007526,2.71235027518957 0.196,0.559792745210169,-0.292904405920318,0.034341486641168,-0.000111077163522655,5.333971503374e-05,0.199958911914464,0.000101640106053846,-0.000216023407495491,2.06007893036042e-05,0.199958949880414,0.00023962724441209
0.198,0.629761828899743,-0.292714128931972,0.00441561909519041,0.490388980261574,0.00151618391365515,0.000801458199368998,-2.72842273402879,-0.015313254660837,-0.0103146776727486,0.490391979044205,2.7284852031684 0.198,0.559792523259121,-0.292904299672934,0.0347414045061985,-0.000110874122549731,5.29080223798938e-05,0.19995895348426,0.000101401095853326,-0.000215669385128514,2.09689583405281e-05,0.199958991222827,0.000239238715796281
0.2,0.630737149666079,-0.292711127193286,0.00441720138191896,0.484916454928319,0.00148549125970898,0.000780891246842524,-2.74385775392988,-0.0153774979486099,-0.0102523696745779,0.484919359002783,2.74391999743582 0.2,0.559792301713678,-0.292904194288228,0.035141322455105,-0.000110671559139241,5.24770374932259e-05,0.199958995790297,0.000101162543619804,-0.000215315633378399,2.13370284982139e-05,0.199959033303068,0.000238851315662911
0.202,0.631701494719456,-0.292708186966933,0.00441874266017778,0.479413549245855,0.00145467392186072,0.000760448720670686,-2.75900903947551,-0.0154393712051282,-0.0101910467382657,0.479416359294281,2.7590710595279 0.202,0.559792080572885,-0.292904089764784,0.0355412404893597,-0.000110469472375252,5.20467598463802e-05,0.199959038832374,0.000100924421597703,-0.000214962141836805,2.1705008450279e-05,0.199959076120932,0.000238465026135332
0.204,0.632654803863062,-0.292705308497598,0.00442024317680165,0.473880418770417,0.00142373377488847,0.000740127059889461,-2.77428588835864,-0.0155016878361502,-0.0101322558936773,0.473883135488015,2.77434769906029 0.204,0.559791859835789,-0.292903986101189,0.0359411586104345,-0.000110267861452851,5.16171889258787e-05,0.199959082610331,0.000100686715909237,-0.000214608896625945,2.20729077377024e-05,0.19995911967625,0.000238079832257145
0.206,0.633597016394538,-0.292702492031833,0.00442170316841733,0.46831640569242,0.00139266717051611,0.000719919697095977,-2.79009439309306,-0.0155671697893433,-0.0100774650681548,0.468319029772318,2.79015601973201 0.206,0.559791639501439,-0.292903883296029,0.036341076819801,-0.000110066725511615,5.11883242598765e-05,0.199959127124005,0.000100449440432193,-0.000214255869990243,2.24406942680999e-05,0.199959163968853,0.000237695714449485
0.208,0.634528069485832,-0.292699737828916,0.00442312285559003,0.462720041198044,0.00136146509573109,0.000699817199616842,-2.80684168894179,-0.0156384730408409,-0.0100280804112007,0.462722573317576,2.80690316737457 0.208,0.559791419568887,-0.292903781347892,0.0367409951189305,-0.000109866063691122,5.07601654459177e-05,0.199959172373108,0.000100212567410995,-0.000213903075807486,2.28083602352158e-05,0.199959208998447,0.000237312675185347
0.21,0.63544789655933,-0.29269704617145,0.0044245024372158,0.457089038936653,0.00133011327835275,0.000679807375451174,-2.82494064696159,-0.0157182148685652,-0.00998546400773899,0.457091479744957,2.8250020231189 0.21,0.559791200037184,-0.292903680255367,0.0371409135092935,-0.000109665875241971,5.03327119566465e-05,0.199959218357446,9.99760829678563e-05,-0.000213550524486017,2.31759281904553e-05,0.199959254764832,0.000236930722620216
0.212,0.636356425641579,-0.292694417375803,0.00442584208509184,0.451420278610198,0.00129859223625683,0.000659875343585886,-2.84481511775986,-0.0158090031274205,-0.00995095225664318,0.451422628717008,2.844876447276 0.212,0.559790980905386,-0.292903580017044,0.0375408319923603,-0.00010946615935925,4.99059633479737e-05,0.199959265076821,9.97400287361393e-05,-0.000213198143167446,2.35433773171367e-05,0.199959301267802,0.000236549809126598
0.214,0.637253577673771,-0.292691851802505,0.00442714193859015,0.445709778465613,0.00126687726584307,0.000640003566424601,-2.86690586023819,-0.0159134679600381,-0.00992587512703424,0.445712038431135,2.86696720820584 0.214,0.559790762172547,-0.292903480631514,0.0379407505696008,-0.000109266915127026,4.94799193839767e-05,0.199959312530955,9.95043908380565e-05,-0.000212845935321225,2.39107006763661e-05,0.199959348507074,0.000236169933703794
0.216,0.638139264755441,-0.292689349866739,0.00442840209935753,0.439952655169245,0.00123493836441668,0.000620171843077749,-2.89167732679674,-0.0160342965363491,-0.00991157651959728,0.439954825495013,2.89173876764912 0.216,0.559790543837725,-0.292903382097366,0.0383406692424841,-0.000109068141795898,4.90545796066888e-05,0.199959360719624,9.92691345791385e-05,-0.000212493946050163,2.42779017375905e-05,0.199959396482416,0.000235791125152837
0.218,0.639013388294448,-0.292686912049048,0.00442962262596246,0.434143069158427,0.00120274007969767,0.000600357260346212,-2.91962552304708,-0.0161742717032232,-0.00990943639991858,0.434145150279072,2.91968714057223 0.218,0.55979032589998,-0.292903284413195,0.0387405880124792,-0.00010886983858871,4.86299435997761e-05,0.199959409642562,9.90342807760668e-05,-0.000212142137190341,2.46449726945541e-05,0.199959445193557,0.000235413359475696
0.22,0.639875837032075,-0.292684538906421,0.00443080352839892,0.428274153077057,0.00117024127760379,0.000580534097478074,-2.95128722165028,-0.0163363154739859,-0.00992089508721621,0.428276145352921,2.95134910914294 0.22,0.559790108358371,-0.292903187577592,0.0391405068810544,-0.000108672004672794,4.82060110579274e-05,0.199959459299514,9.8799801673266e-05,-0.000211790484455632,2.50119161493423e-05,0.199959494640235,0.000235036605800223
0.222,0.640726484906756,-0.292682231083937,0.00443194476235237,0.422337920271825,0.00113739481780173,0.000560673679997347,-2.9872508911094,-0.0165235385304885,-0.00994748022235117,0.422339823982392,2.98731315166694 0.222,0.559789891211961,-0.292903091589151,0.0395404258496773,-0.000108474639382017,4.77827816619536e-05,0.199959509690227,9.85657042096299e-05,-0.000211438980907141,2.53787225609758e-05,0.19995954482219,0.000234660862208034
0.224,0.641565188713162,-0.292679989327149,0.00443304622311891,0.416325149512619,0.00110414712348183,0.00054074417658867,-3.0281698084264,-0.0167392975314317,-0.00999083754442406,0.416326964850752,3.02823255539958 0.224,0.559789674459813,-0.292902996446465,0.0399403449198153,-0.000108277741855955,4.73602551342988e-05,0.199959560814405,9.83320092018402e-05,-0.000211087605728188,2.57453806537522e-05,0.199959595739121,0.000234286119842249
0.226,0.642391785504806,-0.292677814495443,0.00443410773905872,0.41022524103812,0.001070437627676,0.000520710329819651,-3.07477797034659,-0.0169872622565736,-0.0100527665436792,0.410226968105153,3.07484132795871 0.226,0.559789458100994,-0.29290290214813,0.0403402640929349,-0.000108081311345209,4.69384312390408e-05,0.19995961267175,9.80986888943213e-05,-0.000210736358918773,2.61118834887774e-05,0.199959647390723,0.000233912368617946
0.228,0.643206089677315,-0.292675707576639,0.00443512906443819,0.404026037631233,0.00103619807445554,0.000500533110413953,-3.12790961573549,-0.0172714952305364,-0.0101352621191542,0.404027676432987,3.1279737198858 0.228,0.559789242134568,-0.29290280869274,0.0407401833705023,-0.000107885347100378,4.65173096986237e-05,0.199959665261939,9.78657363481793e-05,-0.000210385240478894,2.6478239739669e-05,0.199959699776667,0.000233539608936139
0.23,0.644007889655331,-0.292673669703145,0.00443610987150038,0.397713602575178,0.00100135164675386,0.000480169281343034,-3.24299114641546,-0.0178931514223379,-0.0103852196954926,0.397715153019074,3.24305713692883 0.23,0.559789026559605,-0.292902716078892,0.0411401027539827,-0.000107689848399817,4.60968902771252e-05,0.199959718584708,9.76331446245204e-05,-0.000210034236530765,2.6844455477959e-05,0.199959752896683,0.000233167828471772
0.232,0.644796944087615,-0.292671702170052,0.00443704974156356,0.391054073045571,0.000964625468766188,0.000458992231631982,-3.48803197061653,-0.0192045270797081,-0.0109712057685257,0.391055532145621,3.48810209272312 0.232,0.559788811375174,-0.292902624305179,0.0415400222448411,-0.00010749481452188,4.56771727525007e-05,0.199959772639761,9.74009206622383e-05,-0.000209683340135491,2.7210500776198e-05,0.199959806750467,0.000232797022808968
0.234,0.645572105947514,-0.29266981120127,0.00443794584042691,0.383761474692712,0.000924533538435023,0.000436284458268931,-3.81744986249071,-0.0209166987619191,-0.0117453952865748,0.38376283635172,3.81752523439308 0.234,0.559788596580347,-0.292902533370201,0.0419399418445417,-0.000107300244717168,4.52581569165833e-05,0.199959827426712,9.71690852780149e-05,-0.000209332530476391,2.75763734763901e-05,0.199959861337628,0.000232427183916866
0.236,0.646331989986386,-0.292668004035898,0.00443879487939663,0.375784273595608,0.000880958673718512,0.000412010650485683,-4.15583939317176,-0.0225877199444557,-0.0124885191589083,0.375785532082782,4.1559195408527 0.236,0.559788382174196,-0.292902443272552,0.042339861554548,-0.000107106138180768,4.48398426305951e-05,0.199959882945254,9.69375898995927e-05,-0.000208981790206231,2.79420818080633e-05,0.199959916657855,0.000232058279122101
0.238,0.647075243041896,-0.292666287366575,0.00443959388302885,0.367138117120025,0.0008341826586572,0.000386330381633298,-4.48659888150487,-0.0241136120376905,-0.013150406701079,0.367139268063645,4.48668295325207 0.238,0.559788168155794,-0.29290235401083,0.0427397813763227,-0.000106912494357569,4.44222297557583e-05,0.199959939195039,9.6706420649184e-05,-0.000208631115855562,2.83076175347507e-05,0.199959972710789,0.000231690300850958
0.24,0.647800542454866,-0.292664667305263,0.00444034020092317,0.357837878069589,0.00078450422556775,0.000359409023681367,-4.8101073447937,-0.0254859793130668,-0.0137282024480906,0.357838918513725,4.81019445211129 0.24,0.559787954524218,-0.292902265583633,0.0431397013113281,-0.000106719312498171,4.40053181671729e-05,0.199959996175725,9.64756538546218e-05,-0.000208280500485491,2.86729706852617e-05,0.199960029496086,0.000231323275778901
0.242,0.648506594554174,-0.292663149349673,0.00444103151912358,0.34789768774085,0.000732238741404933,0.000331417571840936,-5.12672772421533,-0.0266965778372707,-0.0142191293791421,0.347898616189561,5.12681695100836 0.242,0.559787741278544,-0.292902177989557,0.0435396213610256,-0.000106526591742151,4.35891077538164e-05,0.199960053886922,9.62452201269669e-05,-0.000207929937157125,2.90381369089099e-05,0.199960087013348,0.000230957170398745
0.244,0.64919213320583,-0.292661738350298,0.00444166587121053,0.337330967172727,0.000677717914218667,0.000302532506164798,-5.43680772863151,-0.0277373094041688,-0.0146204729130697,0.337331783621372,5.43689814091349 0.244,0.559787528417851,-0.292902091227202,0.0439395415268758,-0.000106334331617663,4.31735984185444e-05,0.199960112328272,9.60150986495378e-05,-0.000207579415462122,2.9403130534511e-05,0.199960145262212,0.000230591970756803
0.246,0.649855918422865,-0.292660438478016,0.00444224164914823,0.326150456826324,0.000621289503788258,0.000272935680188657,-5.74068056843153,-0.0286002237413752,-0.0149295700793343,0.326151162779704,5.74077122463769 0.246,0.559787315941218,-0.292902005295164,0.0443394618103387,-0.000106142531347553,4.27587900919679e-05,0.199960171499444,9.57853379944086e-05,-0.000207228900705939,2.97679254510075e-05,0.199960204242339,0.000230227664819308
0.248,0.650496735033135,-0.292659253192282,0.00444275761393129,0.314368244899001,0.000563317019253166,0.000242814225847461,-6.03838544029712,-0.0292761991003969,-0.0151431480219924,0.314368843376202,6.03847539834005 0.248,0.559787103847726,-0.292901920192041,0.0447393822128736,-0.000105951190265686,4.23446828157206e-05,0.199960231399974,9.55559034674766e-05,-0.000206878417174856,3.01325010082511e-05,0.199960263953262,0.00022986425950389
0.25,0.651113391402461,-0.292658185209939,0.00444321290605162,0.301996915065135,0.000504184707386671,0.000212363088100688,-6.2815889930046,-0.0295358003749036,-0.0151497336680841,0.301997410600089,6.28167669933518 0.25,0.559786892136457,-0.292901835916432,0.0451393027359386,-0.000105760307733683,4.19312764232685e-05,0.199960292029448,9.5326815885605e-05,-0.000206527971807831,3.0496879417641e-05,0.199960324394557,0.000229501774764725
0.252,0.651704722693396,-0.292657236453453,0.00444360706628369,0.289241888926983,0.000445173817753552,0.000182215291175125,-6.38575044342777,-0.0290196092260506,-0.0147757748718631,0.28924228890705,6.38583347629584 0.252,0.559786680806495,-0.292901752466936,0.0455392233809914,-0.000105569883002143,4.15185709284893e-05,0.199960353387492,9.5098075248062e-05,-0.000206177474398954,3.08610572860579e-05,0.199960385565848,0.000229140131191005
0.254,0.652270358958169,-0.292656404514668,0.00444394176721633,0.276453913291424,0.000388106270482469,0.000153259988613236,-6.36131525394432,-0.0278534719178047,-0.0140882115565524,0.276454228199251,6.36139183305568 0.254,0.559786469856925,-0.292901669842149,0.0459391441494886,-0.000105379915432691,4.11065665256726e-05,0.199960415473677,9.48696399216686e-05,-0.00020582695270388,3.12250286391147e-05,0.199960447466697,0.000228779337903898
0.256,0.652810538346561,-0.292655684028371,0.00444422010623814,0.263796627911206,0.000333759930082333,0.000125862444948915,-6.29038651493024,-0.0264768041588481,-0.0133063366714037,0.26379686907613,6.29045630991666 0.256,0.559786259286833,-0.29290158804067,0.0463390650428861,-0.000105190404442457,4.06952631176738e-05,0.199960478287606,9.46415099067898e-05,-0.000205476444886665,3.1588783672154e-05,0.199960510096704,0.000228419430116148
0.258,0.653325545469814,-0.292655069474948,0.00444444521699612,0.251292367231703,0.000282199053847076,0.000100034641927621,-6.20872279795403,-0.0250742151867988,-0.012521394110801,0.251292545596062,6.20878605553548 0.258,0.559786049095307,-0.292901507061096,0.046738986062639,-0.000105001349393063,4.0284660746126e-05,0.199960541828812,9.44137129588184e-05,-0.000205125888497193,3.19523010480771e-05,0.199960573455392,0.00022806036233572
0.26,0.653815707815488,-0.292654555232156,0.00444462024480585,0.238961736719389,0.000233463069335138,7.57768685057113e-05,-6.11715776478726,-0.0236575990568421,-0.0117389371912316,0.238961862779577,6.11721477503746 0.26,0.559785839281436,-0.292901426902027,0.0471389072102013,-0.000104812749590621,3.9874759563685e-05,0.19996060609681,9.41862490777544e-05,-0.000204775276596569,3.23155825016075e-05,0.199960637542274,0.000227702130628935
0.262,0.654281392416692,-0.292654135622671,0.00444474832447014,0.226823736172554,0.000187568657619708,5.30788931626946e-05,-6.01646532420729,-0.0222378222468344,-0.010963948533782,0.226823819936634,6.01651641120461 0.262,0.559785629844309,-0.292901347562058,0.0475388284870263,-0.000104624604396752,3.94655596397397e-05,0.199960671091142,9.39590905080222e-05,-0.000204424616123688,3.26786427778946e-05,0.199960702356883,0.000227344733961922
0.264,0.654723002760178,-0.292653804957525,0.0044448325603785,0.21489587542256,0.0001445117803478,3.19210743705833e-05,-5.90736336019553,-0.0208247533904637,-0.0102008706273637,0.214895926383536,5.90740887339754 0.264,0.559785420783018,-0.292901269039788,0.0479387498945659,-0.000104436913228589,3.90570610991902e-05,0.199960736811382,9.3732223371834e-05,-0.000204073875853527,3.30414758054065e-05,0.199960767898789,0.000226988139838864
0.266,0.655140975918382,-0.292653557575549,0.00444487600876763,0.203194282731772,0.000104269644057853,1.22754106532397e-05,-5.79051730298373,-0.0194272960739316,-0.00945363570151873,0.203194309855674,5.79055760935117 0.266,0.559785212096656,-0.292901191333814,0.0483386714342718,-0.000104249675503265,3.86492641363256e-05,0.199960803257045,9.35056754247653e-05,-0.000203723055786087,3.34040607674612e-05,0.199960834167502,0.000226632358835226
0.268,0.655535779891105,-0.292653387878949,0.00444488166202112,0.191733806210625,6.68025960520734e-05,-5.89346843549165e-06,-5.66654353790357,-0.0180534238738983,-0.00872569482814055,0.191733817938655,5.66657901478665 0.268,0.559785003784316,-0.292901114442731,0.0487385931075941,-0.00010406289052689,3.82421688760459e-05,0.199960870427625,9.32794397279223e-05,-0.000203372176738048,3.37663902949536e-05,0.199960901162507,0.000226277407755786
0.27,0.655907911143224,-0.292653290365165,0.00444485243489388,0.180528108580158,3.20559485622595e-05,-2.26273686593226e-05,-5.53601264977054,-0.0167102170399447,-0.00802004624170237,0.180528112844263,5.53604367855914 0.27,0.559784795845094,-0.292901038365138,0.0491385149159823,-0.000103876557744353,3.78357754293734e-05,0.199960938322606,9.30534815868355e-05,-0.000203021176259366,3.41284656785179e-05,0.199960968883285,0.000225923218405585
0.272,0.656257892325426,-0.292653259655155,0.00444479115254648,0.169589755611543,-3.82721077052394e-08,-3.79736534023012e-05,-5.39945250146305,-0.0154039004676698,-0.00733926263686567,0.169589759862979,5.39947946199273 0.272,0.559784588278085,-0.29290096309963,0.0495384368608845,-0.000103690676600543,3.74300841710084e-05,0.199961006941487,9.28278287570804e-05,-0.000202670037002805,3.44902908316902e-05,0.199961037329329,0.000225569789316138
0.274,0.656586270165671,-0.292653290518253,0.00444470054028027,0.158930298574306,-2.95596533084197e-05,-5.19844192067853e-05,-5.25735114796643,-0.0141398825773131,-0.0066855172856095,0.158930309825001,5.2573744136636 0.274,0.559784381082387,-0.292900888644801,0.0499383589437482,-0.000103505246429325,3.70250952813622e-05,0.199961076283769,9.2602488177551e-05,-0.000202318817948965,3.48518436332767e-05,0.199961106500132,0.000225217175005767
0.276,0.656893613519723,-0.292653377893768,0.00444458321486965,0.148560351019677,-5.65978024169577e-05,-6.47157225447392e-05,-5.11015958893495,-0.0129227947336108,-0.00606060934077445,0.148560375896555,5.11017952267756 0.276,0.559784174257099,-0.292900814999249,0.0503382811660196,-0.000103320266647833,3.66208088992126e-05,0.199961146348862,9.23774182148839e-05,-0.000201967477464482,3.52131214811923e-05,0.1999611763951,0.000224865322524089
0.278,0.657180511569749,-0.292653516909463,0.0044444416773901,0.138489660218566,-8.12508322428628e-05,-7.62268565698831e-05,-4.958294362839,-0.0117565308009604,-0.0054659880640781,0.138489705031404,4.95831131350211 0.278,0.559783967801321,-0.292900742161566,0.0507382035291437,-0.000103135736756465,3.62172253715043e-05,0.199961217136255,9.21526396857607e-05,-0.000201615970446545,3.55741382532248e-05,0.199961247013716,0.000224514204122178
0.28,0.657447572160597,-0.292653702897097,0.00444427830744337,0.128727173568321,-0.000103623925620799,-8.65796748010516e-05,-4.80213998686751,-0.0106442868651191,-0.00490277600115329,0.128727244392346,4.80215428651842 0.28,0.559783761714152,-0.292900670130347,0.0511381260345646,-0.00010295165608909,3.58143450174264e-05,0.199961288645415,9.19281664679693e-05,-0.000201264303834048,3.59348809389481e-05,0.19996131835544,0.000224163831730417
0.282,0.657695420264023,-0.292653931405166,0.00444409535869089,0.119281100271096,-0.000123827979703339,-9.58379605744963e-05,-4.64205124851152,-0.00958860089245171,-0.00437179127881631,0.119281203046274,4.64206321021519 0.282,0.559783555994696,-0.292900598904186,0.0515380486837253,-0.000102768024090594,3.54121681561681e-05,0.199961360875779,9.17039430503585e-05,-0.000200912481096438,3.62953261195953e-05,0.199961390419706,0.000223814183932649
0.284,0.657924696561682,-0.292654198209016,0.00444389495560107,0.110158968574275,-0.000141978329190606,-0.000104066839916317,-4.47835535392903,-0.00859139197284529,-0.00387356898987056,0.110159109224346,4.47836527012007 0.284,0.559783350642056,-0.292900528481674,0.0519379714780677,-0.000102584840316888,3.50106950930406e-05,0.199961433826719,9.14800110662916e-05,-0.000200560495294821,3.66554842035071e-05,0.199961463205878,0.000223465275199048
0.286,0.65813605613832,-0.292654499318482,0.00444367909133123,0.10136767885538,-0.00015819354759472,-0.000111332236533979,-4.31135515083225,-0.00747888871666101,-0.00329858683163069,0.101367863431133,4.31136289948541 0.286,0.559783145655335,-0.292900458861405,0.0523378944190322,-0.000102402104046328,3.46099261749888e-05,0.199961507497716,9.12563982713443e-05,-0.000200208332551408,3.70153573556186e-05,0.199961536713431,0.000223117106759293
0.288,0.658330167277103,-0.292654830983206,0.00444344962665494,0.0929135479709463,-0.00017189388405725,-0.00011726118724284,-4.14133516891956,-0.00516546321341348,-0.0019710992612415,0.0929137809705469,4.14133885942367 0.288,0.55978294103364,-0.29290039004197,0.0527378175080586,-0.000102219814723803,3.4209861762835e-05,0.199961581888149,9.10330075210019e-05,-0.00019985596164118,3.73749165297199e-05,0.199961610941741,0.000222769607997687
0.29,0.658507710330203,-0.292655186894019,0.00444321004658225,0.0848023381797013,-0.000178855400448374,-0.000119216633578945,-3.96855250228006,-0.00110280999957024,0.000437273408454563,0.08480261058838,3.96855267959885 0.29,0.559782736776076,-0.292900322021958,0.0531377407465848,-0.000102037972016244,3.38105023284241e-05,0.199961656997382,9.08098596319461e-05,-0.000199503375625243,3.77341738619363e-05,0.199961685890164,0.000222422785184619
0.292,0.658669376629822,-0.292655546404808,0.00444297276012062,0.0770393379618261,-0.000176305124055531,-0.000115512093609021,-3.79323007748677,0.00311144602443968,0.00291497610424573,0.0770396262980098,3.79323247362093 0.292,0.559782532881752,-0.29290025479996,0.0535376641360481,-0.000101856575285275,3.3411848260334e-05,0.199961732824844,9.05870517486917e-05,-0.000199150598789721,3.80931228366465e-05,0.199961761558124,0.000222076700602005
0.294,0.658815867682051,-0.292655892114515,0.00444274799820782,0.0696294178697542,-0.000166409616350616,-0.000107556729161962,-3.61557744982948,0.00616594225330557,0.00464983206018703,0.0696296997946369,3.61558569743514 0.294,0.559782329349775,-0.292900188374565,0.0539375876778842,-0.00010167562380925,3.30138999332652e-05,0.199961809369873,9.03645006045117e-05,-0.000198797592970701,3.84517469947942e-05,0.199961837944953,0.000221731285089405
0.296,0.658947894301301,-0.292656212043273,0.00444254253320397,0.0625770281625082,-0.000151641355042309,-9.69127653682732e-05,-3.43579736439281,0.00809787469718824,0.00568232356220471,0.0625772869405185,3.43581160623574 0.296,0.559782126179256,-0.292900122744361,0.0543375113735276,-0.000101495117282857,3.26166578884512e-05,0.199961886631832,9.01421784438305e-05,-0.000198444326943159,3.88100545659075e-05,0.199961915050009,0.000221386502673337
0.298,0.659066175794701,-0.292656498679935,0.00444236034714635,0.055886228412183,-0.000134018117561863,-8.48274349131427e-05,-3.25407695360435,0.00912359962926266,0.00616046968906352,0.0558864534810381,3.25409557503094 0.298,0.559781923369306,-0.292900057907934,0.0547374352244115,-0.000101315055095474,3.22201226254925e-05,0.199961964610092,8.99201407777993e-05,-0.000198090821523777,3.91680455430476e-05,0.199961992872656,0.000221042396569361
0.3,0.65917143921495,-0.292656748115743,0.00444220322346432,0.0495607203480907,-0.000115146956525258,-7.22708866120191e-05,-3.07058759879685,0.00943726555582834,0.00621366078902562,0.0495609068049032,3.07060838816131 0.3,0.559781720919036,-0.29289999386387,0.055137359231968,-0.000101135436719746,3.18242946023561e-05,0.199962043304014,8.96983459730548e-05,-0.00019773708365145,3.95256978188984e-05,0.199962071412253,0.00022069895402868
0.302,0.659264418676093,-0.292656959267761,0.0044420712635999,0.0436038780169956,-9.62690553385492e-05,-5.99727917570402e-05,-2.88548622605355,0.00921074156529087,0.00595352606276577,0.0436040255319139,2.88550706860641 0.302,0.559781518827559,-0.292899930610755,0.0555372833976276,-0.000100956261711582,3.14291742908867e-05,0.199962122712883,8.94768148462787e-05,-0.00019738306475392,3.98830014153306e-05,0.199962150668075,0.000220356140029228
0.304,0.659345854727018,-0.292657133191965,0.00444196333229729,0.0380187754438765,-7.83039902640947e-05,-4.8456782360956e-05,-2.69891650991893,0.0085941273056389,0.00547511430377261,0.0380188869619635,2.69893574644039 0.304,0.559781317093989,-0.292899868147173,0.0559372077228195,-0.000100777529460361,3.10347623433404e-05,0.19996220283602,8.92555543363648e-05,-0.000197028740545058,4.0239974977152e-05,0.19996223063944,0.000220013940846541
0.306,0.659416493777869,-0.292657272483722,0.00444187743647045,0.0328082119773198,-6.18925461159935e-05,-3.80723345419498e-05,-2.51100998653608,0.00771658791379191,0.00485819388797853,0.0328082924477742,2.51102654312152 0.306,0.559781115717441,-0.292899806471706,0.0563371322089717,-0.000100599239494237,3.06410593287065e-05,0.199962283672783,8.90345366877376e-05,-0.000196674138780439,4.0596608540111e-05,0.199962311325699,0.000219672370163356
0.308,0.659477087574927,-0.292657380762149,0.00444181104295913,0.0279747354977322,-4.7437638608927e-05,-2.90240068090419e-05,-2.3218870795344,0.00668735189446322,0.00416855671769161,0.0279747907747423,2.3219004517096 0.308,0.559780914697031,-0.292899745582936,0.0567370568575106,-0.00010042139131361,3.02480657882187e-05,0.199962365222454,8.88137341448213e-05,-0.000196319252521171,4.09528700048844e-05,0.199962392726131,0.000219331406426109
0.31,0.65952839271986,-0.292657462234277,0.00444176134044322,0.0235206636591822,-3.51431385381406e-05,-2.13981076711833e-05,-2.13165804343468,0.00559678021289089,0.00345926595441553,0.0235206996470678,2.13166819758832 0.31,0.559780714031876,-0.292899685479443,0.0571369816698615,-0.000100243984557657,2.98557823186218e-05,0.199962447484263,8.85931952798734e-05,-0.000195964054011677,4.13087728051708e-05,0.199962474839958,0.000218991048733181
0.312,0.659571170229564,-0.292657521334703,0.00444172545052844,0.0194481033239935,-2.50505177573634e-05,-1.51869429913798e-05,-1.94042382944959,0.00451746504440131,0.00277182454593016,0.019448125387101,1.94043106767479 0.312,0.559780513721093,-0.292899626159806,0.0575369066474477,-0.00010006701853249,2.9464209572172e-05,0.199962530457545,8.83729617262573e-05,-0.000195608518965828,4.16643160944252e-05,0.199962557666511,0.000218651293826246
0.314,0.659606185133156,-0.292657562436348,0.00444170059267125,0.0157589683413839,-1.70732783605354e-05,-1.03108094874626e-05,-1.74827687830781,0.00350534936494062,0.00213726428915928,0.0157589809630688,1.74828169886849 0.314,0.559780313763802,-0.292899567622604,0.0579368317916917,-9.98904927107524e-05,2.90733482427585e-05,0.199962614141527,8.81529155227766e-05,-0.000195252661261413,4.20194768771531e-05,0.19996264120501,0.000218312103837281
0.316,0.659634206102929,-0.292657589627817,0.00444168420729049,0.0124549958107622,-1.10291202976009e-05,-6.63788583474267e-06,-1.55530184532681,0.00260087700681976,0.0015771675406645,0.0124550024628311,1.55530481967222 0.316,0.559780114159122,-0.292899509866413,0.0583367571040138,-9.97144068703991e-05,2.86831989271263e-05,0.199962698535453,8.7933077486113e-05,-0.000194896467020643,4.23742776978208e-05,0.199962725454694,0.000217973480918481
0.318,0.659656005116399,-0.292657606552829,0.00444167404112791,0.00953776096007663,-6.66977033325632e-06,-4.00213932480464e-06,-1.36157626250133,0.0018301916336616,0.00110463931231319,0.00953776413183495,1.36157794063965 0.318,0.559779914906174,-0.292899452889809,0.0587366825858335,-9.95387604008079e-05,2.82937623746759e-05,0.199962783638638,8.77135308829934e-05,-0.00019453990154905,4.27287085921768e-05,0.199962810414873,0.000217635427567828
0.32,0.65967235714677,-0.292657616306898,0.00444166819873319,0.00700869076075694,-3.70835376295453e-06,-2.2193285854899e-06,-1.16717114195114,0.00120640369222213,0.000725247538239936,0.00700869209319589,1.1671719907526 0.32,0.55977971600408,-0.292899396691364,0.0591366082385684,-9.93635527468672e-05,2.79050393209301e-05,0.199962869450287,8.74942202022665e-05,-0.000194182985663316,4.30827266223454e-05,0.199962896084747,0.000217297933315386
0.322,0.659684039879442,-0.292657621386244,0.00444166516381357,0.00486907639227207,-1.84415556436779e-06,-1.10114917184489e-06,-0.972151525127638,0.000730939860721368,0.000437947266125615,0.00486907686602096,0.972151898562607 0.322,0.559779517451963,-0.292899341269652,0.0595365340636346,-9.91887835199988e-05,2.75170304320227e-05,0.199962955969544,8.72751246272473e-05,-0.000193825702016204,4.3436350870285e-05,0.199962982463454,0.000216960979712257
0.324,0.659691833452339,-0.29265762368352,0.00444166379413651,0.00312008466024638,-7.84594320069053e-07,-4.67539520987436e-07,-0.776576982282339,0.000394983445256569,0.00023600066258872,0.00312008479392567,0.776577118590922 0.324,0.559779319248946,-0.292899286623242,0.0599364600624465,-9.90144522483582e-05,2.71297365128653e-05,0.199963043195691,8.70562649746241e-05,-0.000193468015913245,4.37896021526773e-05,0.19996306955027,0.000216624550107852
0.326,0.659696520218083,-0.292657624524621,0.00444166329365549,0.00176276846314271,-2.64221783341511e-07,-1.57146521490015e-07,-0.580502066020726,0.000181006279409423,0.00010790048542153,0.00176276848994946,0.580502104268468 0.326,0.559779121394154,-0.292899232750705,0.0603363862364174,-9.88405584601003e-05,2.67431583683697e-05,0.199963131127953,8.68376343055032e-05,-0.000193109930823887,4.41424353667119e-05,0.199963157344415,0.000216288637507122
0.328,0.659698884526191,-0.292657624740408,0.00444166316555042,0.000798076396163471,-6.05692024313597e-08,-3.5937579301315e-08,-0.38397672320195,6.43856704063416e-05,3.83010342192013e-05,0.000798076399271029,0.383976730510315 0.328,0.559778923886713,-0.292899179650609,0.0607363125869583,-9.86671017111362e-05,2.63572967895697e-05,0.199963219765432,8.66192256809838e-05,-0.000192751446748129,4.44948587488558e-05,0.199963245844987,0.000215953242476585
0.33,0.659699712523667,-0.292657624766898,0.00444166314990517,0.000226861570334913,-6.67910171614494e-09,-3.94238461320917e-09,-0.194553548701903,1.51281660809577e-05,8.97662673360332e-06,0.000226861570467489,0.194553549497163 0.33,0.559778726725747,-0.292899127321518,0.0611362391154791,-9.84940815573764e-05,2.59721525813772e-05,0.199963309107388,8.64010599177511e-05,-0.000192392563685972,4.48468822841774e-05,0.199963335051238,0.000215618377155526
0.332,0.659699791972473,-0.292657624767124,0.00444166314978088,1.9862201355858e-05,-5.6538107529036e-11,-3.10723669016965e-11,-0.0567153925837282,1.66977542903623e-06,9.85596153302291e-07,1.98622013559628e-05,0.0567153926168722 0.332,0.559778529910386,-0.292899075761998,0.0615361658233879,-9.83214974714652e-05,2.55877265348259e-05,0.199963399152961,8.61831161991233e-05,-0.000192033233065158,4.51984625976509e-05,0.199963424962305,0.00021528398254501
0.334,0.659699791972473,-0.292657624767124,0.00444166314978088,0,0,0,-0.009931100677929,2.8269053764518e-08,1.55361834508483e-08,0,0.00993110067798139 0.334,0.559778333439758,-0.292899024970612,0.061936092712091,-9.81493490925799e-05,2.52040196491165e-05,0.199963489901238,8.59653806473125e-05,-0.000191673447946794,4.55496257031895e-05,0.199963515577267,0.000214950054011043
0.336,0.55977813731299,-0.29289897494592,0.0623360197829929,-9.79776359488759e-05,2.48210327430387e-05,0.199963581351464,8.57478879567885e-05,-0.000191313225678113,4.59003733424556e-05,0.199963606895366,0.000214616623031375
0.338,0.559777941529214,-0.292898925686481,0.0627359470374968,-9.78063575407528e-05,2.44387667464041e-05,0.199963673502732,8.55306173108693e-05,-0.000190952552381328,4.62506621543013e-05,0.199963698915688,0.000214283661318901
0.34,0.55977774608756,-0.292898877190853,0.0631358744770038,-9.76355134796324e-05,2.40572225335134e-05,0.199963766354113,8.53135340150856e-05,-0.000190591424586994,4.66005155505544e-05,0.1999637916373,0.000213951158589573
0.342,0.55977755098716,-0.292898829457591,0.0635358021029133,-9.74651034046924e-05,2.36764010480561e-05,0.199963859904794,8.5096658886119e-05,-0.00019022978331451,4.69499335242762e-05,0.199963885059384,0.000213619072349358
0.344,0.559777356227146,-0.292898782485249,0.063935729916623,-9.72951268440879e-05,2.32963034002553e-05,0.199963954153847,8.4880026618439e-05,-0.000189867645911112,4.72988896313419e-05,0.199963979181005,0.000213287427765755
0.346,0.559777161806652,-0.292898736272377,0.0643356579195287,-9.71255832982187e-05,2.29169304644117e-05,0.199964049100352,8.46636233342578e-05,-0.000189505026254588,4.76473816998779e-05,0.199964074001239,0.000212956232767888
0.348,0.559776967724813,-0.292898690817527,0.0647355861130244,-9.69564723507509e-05,2.2538283295237e-05,0.199964144743374,8.44474351557877e-05,-0.000189141889650468,4.79954079951605e-05,0.199964169519143,0.000212625452177209
0.35,0.559776773980763,-0.292898646119244,0.0651355144985022,-9.67877935575955e-05,2.21603629058098e-05,0.199964241081984,8.42314135107713e-05,-0.000188778232629305,4.83429737213603e-05,0.199964265733787,0.00021229506646385
0.352,0.559776580573639,-0.292898602176075,0.0655354430773523,-9.66195466967078e-05,2.17831703647198e-05,0.199964338115269,8.40156000325719e-05,-0.000188414027435524,4.86900650006894e-05,0.199964362644249,0.000211965066020509
0.354,0.559776387502576,-0.292898558986563,0.0659353718509632,-9.64517311574652e-05,2.14067067960677e-05,0.199964435842244,8.3800050232341e-05,-0.000188049274069124,4.90366670879982e-05,0.199964460249542,0.000211635471072234
0.356,0.559776194766714,-0.292898516549248,0.0663353008207213,-9.62843464957785e-05,2.10309732684433e-05,0.199964534261937,8.35846530877759e-05,-0.000187683969060658,4.93827851874573e-05,0.199964558548685,0.000211306237359517
0.358,0.55977600236519,-0.29289847486267,0.066735229988011,-9.61173925451141e-05,2.06559709198251e-05,0.199964633373385,8.33694710489218e-05,-0.000187318095062893,4.97284071560022e-05,0.199964657540713,0.000210977373002986
0.36,0.559775810297144,-0.292898433925364,0.0671351593542148,-9.59508686115828e-05,2.02817008881917e-05,0.199964733175566,8.31545388102483e-05,-0.000186951659014722,5.00735321262713e-05,0.199964757224596,0.000210648899243986
0.362,0.559775618561716,-0.292898393735866,0.0675350889207132,-9.57847743898731e-05,1.99081642837662e-05,0.199964833667514,8.29397384105589e-05,-0.000186584626221675,5.04181765781375e-05,0.199964857599365,0.000210320744291566
0.364,0.559775427158046,-0.292898354292707,0.0679350186888849,-9.56191096579405e-05,1.9535362383305e-05,0.199964934848272,8.27251531165806e-05,-0.00018621697586707,5.07622980108757e-05,0.199964958664057,0.000209992914067556
0.366,0.559775236085277,-0.292898315594417,0.0683349486601063,-9.54538737774068e-05,1.91632963802979e-05,0.199965036716706,8.25108106838889e-05,-0.000185848735706484,5.11058799446129e-05,0.199965060417533,0.000209665441616696
0.368,0.559775045342551,-0.292898277639522,0.0687348788357517,-9.5289066415205e-05,1.8791967440479e-05,0.199965139271792,8.22966417235448e-05,-0.000185479871045446,5.14489596759037e-05,0.199965162858762,0.00020933827947545
0.37,0.559774854929012,-0.292898240426547,0.0691348092171935,-9.51246872105126e-05,1.84213768961161e-05,0.199965242512544,8.20826878689118e-05,-0.000185110357597828,5.17915189901518e-05,0.199965265986756,0.000209011419728895
0.372,0.559774664843802,-0.292898203954014,0.0695347398058019,-9.49607356637293e-05,1.80515260100877e-05,0.199965346437868,8.18689074866263e-05,-0.000184740216180312,5.21335448769311e-05,0.199965369800412,0.000208684862864649
0.374,0.559774475086069,-0.292898168220443,0.069934670602945,-9.47972115805661e-05,1.76824160313948e-05,0.199965451046724,8.16553005766884e-05,-0.000184369425976216,5.24750338667945e-05,0.199965474298687,0.000208358591198899
0.376,0.559774285654956,-0.29289813322435,0.0703346016099888,-9.46341144614226e-05,1.73140483061829e-05,0.199965556338003,8.1441950405825e-05,-0.00018399796269941,5.28159755514012e-05,0.199965579480467,0.00020803261483932
0.378,0.559774096549611,-0.29289809896425,0.070734532828297,-9.44714437789428e-05,1.69464241805972e-05,0.199965662310626,8.12287598295213e-05,-0.000183625833288791,5.31563699307513e-05,0.199965685344667,0.000207706903444878
0.38,0.559773907769181,-0.292898065438653,0.0711344642592313,-9.43091994221045e-05,1.65795449730277e-05,0.199965768963483,8.10157288477775e-05,-0.000183253003049888,5.34962048617804e-05,0.199965791890172,0.00020738142487251
0.382,0.559773719312813,-0.29289803264607,0.0715343959041509,-9.41473808635517e-05,1.62134121683977e-05,0.199965876295446,8.08029615440019e-05,-0.000182879475452147,5.38354864160206e-05,0.199965899115848,0.00020705622601985
0.384,0.559773531179658,-0.292898000585005,0.0719343277644131,-9.39859875759285e-05,1.58480270712191e-05,0.199965984305429,8.0590367712574e-05,-0.000182505281720591,5.41742137261103e-05,0.199966007020605,0.000206731300621851
0.386,0.559773343368863,-0.292897969253961,0.0723342598413726,-9.38250193927014e-05,1.54833910415153e-05,0.199966092992301,8.03779057201303e-05,-0.000182130335119046,5.45123685774528e-05,0.199966115603307,0.000206406552770144
0.388,0.55977315587958,-0.29289793865144,0.0727341921363823,-9.3664475953048e-05,1.51195057307429e-05,0.199966202354903,8.01656727111854e-05,-0.000181754642586407,5.48499457658779e-05,0.199966224862789,0.000206082026711378
0.39,0.559772968710959,-0.292897908775939,0.0731341246507922,-9.35043567018567e-05,1.47563724711697e-05,0.199966312392084,7.99536617468454e-05,-0.000181378249225483,5.51869348830447e-05,0.199966334797894,0.000205757758299938
0.392,0.559772781862153,-0.292897879625951,0.0735340573859506,-9.33446613060606e-05,1.4393992733841e-05,0.199966423102642,7.97418103770652e-05,-0.000181001089116783,5.55233333268678e-05,0.199966445407418,0.000205433666002921
0.394,0.559772595332314,-0.292897851199968,0.0739339903432028,-9.31853894603484e-05,1.40323681147025e-05,0.199966534485417,7.95301255407387e-05,-0.000180623165729754,5.58591402299857e-05,0.199966556690192,0.000205109756993657
0.396,0.559772409120595,-0.292897823496478,0.0743339235238923,-9.30265408038976e-05,1.3671500070922e-05,0.199966646539203,7.93186488712293e-05,-0.000180244475594948,5.61943477861426e-05,0.199966668645007,0.000204786043871073
0.398,0.559772223226151,-0.292897796513967,0.0747338569293596,-9.28681148648635e-05,1.33113902123227e-05,0.199966759262808,7.91073734296432e-05,-0.000179864997895684,5.65289638015942e-05,0.199966781270664,0.000204462509393369
0.4,0.559772037648136,-0.292897770250917,0.0751337905609435,-9.27101113101791e-05,1.29520400793392e-05,0.199966872655058,7.88962506437229e-05,-0.000179484749979197,5.68629770006379e-05,0.199966894565987,0.000204139148607285
0.402,0.559771852385706,-0.292897744705807,0.0755337244199799,-9.25525298622886e-05,1.25934512124059e-05,0.199966986714716,7.86853429635136e-05,-0.000179103683273229,5.71963683013154e-05,0.19996700852973,0.00020381593928391
0.404,0.559771667438016,-0.292897719877112,0.0759336585078024,-9.2395369938325e-05,1.22356253462463e-05,0.199967101440532,7.84746434501215e-05,-0.000178721780430546,5.7529127295286e-05,0.199967123160641,0.000203492862165348
0.406,0.559771482804226,-0.292897695763306,0.076333592825742,-9.22386312884881e-05,1.18785640906838e-05,0.199967216831225,7.82640688368196e-05,-0.00017833907267617,5.78612583193582e-05,0.199967238457432,0.00020316991541119
0.408,0.559771298483491,-0.292897672362856,0.0767335273751273,-9.20823136629777e-05,1.15222690555416e-05,0.199967332885565,7.80536885125471e-05,-0.000177955528785079,5.81927700471496e-05,0.199967354418869,0.000202847102521458
0.41,0.559771114474971,-0.292897649674229,0.0771334621572843,-9.19264165344379e-05,1.11667419755434e-05,0.199967449602305,7.78435371717733e-05,-0.000177571152226719,5.8523659009213e-05,0.199967471043699,0.000202524440614866
0.412,0.559770930777825,-0.292897627695888,0.0775333971735365,-9.17709395142906e-05,1.08119844466348e-05,0.199967566980201,7.76335384866655e-05,-0.000177185911776067,5.88538991846965e-05,0.199967588330673,0.000202201867150428
0.414,0.559770747391213,-0.292897606426292,0.0779333324252051,-9.16158823804913e-05,1.04579983284392e-05,0.199967685017902,7.74237132739052e-05,-0.000176799783146996,5.91834740937269e-05,0.199967706278435,0.00020187936572059
0.416,0.559770564314296,-0.292897585863895,0.0783332679136081,-9.1461244661195e-05,1.01047853140468e-05,0.199967803714097,7.72141239835377e-05,-0.000176412811442317,5.9512404552986e-05,0.199967824885669,0.000201557007516995
0.418,0.559770381546234,-0.29289756600715,0.0787332036400614,-9.13070258845571e-05,9.75234708266991e-06,0.19996792306752,7.700469428773e-05,-0.000176024934211982,5.9840686225665e-05,0.199967944151104,0.000201234709070374
0.42,0.559770199086192,-0.292897546854506,0.0791331396058782,-9.11532258840441e-05,9.40068557719886e-06,0.199968043076842,7.67954033698003e-05,-0.000175636141047652,6.0168306101338e-05,0.199968064073405,0.000200912451281511
0.422,0.559770016933331,-0.292897528404408,0.0795330758123688,-9.09998442710779e-05,9.0498025184793e-06,0.199968163740745,7.65863206186878e-05,-0.000175246459704903,6.04952485674936e-05,0.199968184651249,0.000200590282028451
0.424,0.559769835086815,-0.292897510655296,0.0799330122608412,-9.08468806015693e-05,8.69969973837924e-06,0.199968285057837,7.63774460343924e-05,-0.000174855841611476,6.08215049505145e-05,0.199968305883239,0.000200268157910436
0.426,0.559769653545809,-0.292897493605609,0.0803329489526002,-9.06943344869403e-05,8.3503791520334e-06,0.199968407026765,7.61687588002324e-05,-0.00017446430064516,6.11471030059762e-05,0.199968427768018,0.000199946093292158
0.428,0.559769472309477,-0.29289747725378,0.0807328858889482,-9.05422055663684e-05,8.0018425357986e-06,0.199968529646249,7.59602380995261e-05,-0.000174071840275403,6.1472012376218e-05,0.199968550304299,0.000199624075839023
0.43,0.559769291376986,-0.292897461598239,0.0811328230711852,-9.03904935345422e-05,7.65409179093179e-06,0.199968652914814,7.57518908711673e-05,-0.000173678401521604,6.17962096424728e-05,0.199968673490604,0.000199302051298609
0.432,0.559769110747503,-0.292897446637413,0.0815327605006075,-9.02391980028837e-05,7.30712892971219e-06,0.199968776831087,7.55437379318379e-05,-0.000173283994792106,6.21197390401895e-05,0.199968797325553,0.000198980052191786
0.434,0.559768930420194,-0.292897432369723,0.0819326981785095,-9.00883185828149e-05,6.96095581176336e-06,0.19996890139377,7.53357515259622e-05,-0.000172888637434143,6.24425693443453e-05,0.199968921807844,0.000198658075290534
0.436,0.559768750394229,-0.292897418793589,0.0823326361061826,-8.99378549967799e-05,6.61557437997561e-06,0.199969026601365,7.51279594091158e-05,-0.000172492284344905,6.27646719320029e-05,0.199969046935972,0.000198336084680104
0.438,0.559768570668774,-0.292897405907426,0.082732574284915,-8.97878067451784e-05,6.27098667438374e-06,0.199969152452458,7.49203823979804e-05,-0.000172094935524391,6.30860728240145e-05,0.19996917270852,0.000198014098276261
0.44,0.559768391243002,-0.292897393709643,0.0831325127159924,-8.9638173467188e-05,5.92719463787805e-06,0.199969278945656,7.47129580425109e-05,-0.000171696590972603,6.34067650814862e-05,0.199969299124089,0.000197692092176632
0.442,0.55976821211608,-0.292897382198647,0.0835324514006976,-8.94889549130084e-05,5.58420031049333e-06,0.199969406079518,7.45057210371768e-05,-0.000171297212525623,6.37267330919066e-05,0.199969426181233,0.000197370043311757
0.444,0.559768033287182,-0.292897371372841,0.0839323903403105,-8.93401505830393e-05,5.24200578777556e-06,0.199969533852588,7.42986921986599e-05,-0.000170896810591791,6.40459707837437e-05,0.199969553878491,0.000197047968541952
0.446,0.559767854755478,-0.292897361230624,0.0843323295361079,-8.91917601442137e-05,4.90061306812617e-06,0.199969662263401,7.40918090769149e-05,-0.000170495395579451,6.436446948338e-05,0.199969682214392,0.000196725852439277
0.448,0.559767676520141,-0.292897351770389,0.0847322689893641,-8.90437833467316e-05,4.56002420545775e-06,0.199969791310466,7.38851202441992e-05,-0.000170092929324683,6.46822300581772e-05,0.19996981118744,0.00019640368246306
0.45,0.559767498580345,-0.292897342990527,0.0851322087013498,-8.88962196632369e-05,4.22024135082743e-06,0.199969920992322,7.36786395783006e-05,-0.000169689397949701,6.49992611817529e-05,0.19996994079617,0.000196081456698013
0.452,0.559767320935263,-0.292897334889424,0.0855321486733334,-8.87490687884184e-05,3.88126661365895e-06,0.199970051307511,7.34723254458557e-05,-0.000169284794515611,6.53155472415956e-05,0.199970071039118,0.00019575915041725
0.454,0.55976714358407,-0.292897327465461,0.0859320889065799,-8.86023303614535e-05,3.54310217276499e-06,0.199970182254511,7.32662264191219e-05,-0.000168879115552967,6.56310656863001e-05,0.199970201914757,0.00019543677337382
0.456,0.559766966525941,-0.292897320717015,0.0863320294023514,-8.84560038827419e-05,3.20575015144708e-06,0.199970313831774,7.30602939258417e-05,-0.000168472361061766,6.59458234547605e-05,0.199970333421534,0.000195114311677496
0.458,0.559766789760054,-0.29289731464246,0.086731970161907,-8.83100891857501e-05,2.86921272851792e-06,0.199970446037804,7.28545349049092e-05,-0.000168064492878095,6.62598370268496e-05,0.199970465557949,0.000194791742703346
0.46,0.559766613285585,-0.292897309240164,0.0871319111865026,-8.81645857431223e-05,2.5334921799347e-06,0.199970578871122,7.26489979285815e-05,-0.000167655517940845,6.65730760449068e-05,0.199970598322514,0.000194469082504446
0.462,0.559766437101711,-0.292897304508491,0.0875318524773914,-8.80194931940358e-05,2.19859065675454e-06,0.199970712330109,7.24436205468137e-05,-0.000167245432780571,6.68855240290588e-05,0.199970731713609,0.000194146301197147
0.464,0.559766261207612,-0.292897300445802,0.0879317940358231,-8.7874811260935e-05,1.86451044881242e-06,0.199970846413218,7.22384305151812e-05,-0.000166834216580591,6.71972043980728e-05,0.19997086572968,0.000193823401436134
0.466,0.559766085602466,-0.29289729705045,0.0883317358630443,-8.77305394719751e-05,1.53125379043217e-06,0.199970981118926,7.20334625281537e-05,-0.000166421858932564,6.75081136825017e-05,0.199971000369199,0.000193500388287297
0.468,0.559765910285454,-0.292897294320786,0.0887316779602988,-8.75866774108224e-05,1.19882301308216e-06,0.199971116445673,7.18286749523677e-05,-0.000166008339019807,6.78182275962169e-05,0.1999711356306,0.000193177222166125
0.47,0.559765735255756,-0.292897292255158,0.089131620328827,-8.74432247721656e-05,8.67220434352944e-07,0.199971252391837,7.16240539100354e-05,-0.000165593681128451,6.81275426697713e-05,0.199971271512258,0.000192853919841937
0.472,0.559765560512555,-0.292897290851905,0.0895315629698661,-8.73001811951823e-05,5.36448288568358e-07,0.199971388955843,7.14196479734141e-05,-0.00016517784362513,6.84360623726121e-05,0.199971408012592,0.00019253046713277
0.474,0.559765386055032,-0.292897290109364,0.0899315058846504,-8.7157546180272e-05,2.06509059852422e-07,0.199971526136086,7.12154363258221e-05,-0.000164760819570952,6.8743773694313e-05,0.199971545129991,0.000192206848105118
0.476,0.55976521188237,-0.292897290025868,0.0903314490744105,-8.7015319449879e-05,-1.22594989715452e-07,0.199971663930938,7.10113842727899e-05,-0.000164342626313152,6.9050683573768e-05,0.199971682862822,0.000191883069659224
0.478,0.559765037993754,-0.292897290599744,0.0907313925403741,-8.68735006431808e-05,-4.50861445400185e-07,0.19997180233882,7.08075612032565e-05,-0.000163923215279471,6.93567668574868e-05,0.199971821209501,0.00019155910925883
0.48,0.559764864388367,-0.292897291829314,0.0911313362837657,-8.6732089205066e-05,-7.78287850833336e-07,0.199971941358005,7.06039463005403e-05,-0.000163502603817145,6.966203395381e-05,0.199971960168296,0.000191234980227932
0.482,0.559764691065397,-0.292897293712896,0.0915312803058062,-8.65910848579786e-05,-1.10487186066876e-06,0.199972080986956,7.04005048701716e-05,-0.000163080767640044,6.996651088359e-05,0.199972099737665,0.000190910661057115
0.484,0.559764518024028,-0.292897296248802,0.0919312246077136,-8.64504871855853e-05,-1.43061092139351e-06,0.199972221224049,7.01972646677262e-05,-0.000162657692870382,7.02701377988667e-05,0.199972239915978,0.000190586130877927
0.486,0.559764345263448,-0.292897299435339,0.0923311691907023,-8.63102957993077e-05,-1.75550263215029e-06,0.199972362067507,6.99942118154161e-05,-0.000162233382977605,7.0572919036449e-05,0.199972380701454,0.000190261391620436
0.488,0.559764172782845,-0.292897303270812,0.0927311140559836,-8.61705103383236e-05,-2.07954445330394e-06,0.199972503515725,6.97913671299232e-05,-0.000161807813675585,7.08748745456566e-05,0.199972522092482,0.000189936440248308
0.49,0.559764000581407,-0.292897307753517,0.0931310592047652,-8.6031130330788e-05,-2.40273388685263e-06,0.199972645567006,6.95887167334596e-05,-0.000161381016189343,7.11759783056375e-05,0.199972664087359,0.00018961129125313
0.492,0.559763828658324,-0.292897312881748,0.0935310046382516,-8.58921554713898e-05,-2.72506851806131e-06,0.199972788219638,6.93862675649192e-05,-0.000160952952354964,7.14762433268178e-05,0.199972806684371,0.000189285922240626
0.494,0.559763657012785,-0.292897318653791,0.0939309503576438,-8.57535852605284e-05,-3.04654569627249e-06,0.199972931471979,6.91840404409837e-05,-0.000160523559722403,7.17756574661332e-05,0.199972949881867,0.000188960285992552
0.496,0.559763485643982,-0.29289732506793,0.0943308963641395,-8.56154193096258e-05,-3.36716275695092e-06,0.199973075322268,6.89819937279916e-05,-0.000160092890333376,7.20742162133025e-05,0.199973093678083,0.000188634412652477
0.498,0.559763314551108,-0.292897332122442,0.0947308426589329,-8.54776572856164e-05,-3.686917257606e-06,0.199973219768844,6.87801551821157e-05,-0.000159660954596202,7.23719147111011e-05,0.199973238071352,0.000188308322196331
0.5,0.559763143733353,-0.2928973398156,0.0951307892432149,-8.53402986888974e-05,-4.00580657533572e-06,0.199973364809927,6.85785386814401e-05,-0.000159227690060815,7.26687323163176e-05,0.199973383059889,0.000187981961651232
0.502,0.559762973189913,-0.292897348145669,0.0955307361181726,-8.52033431308906e-05,-4.32382801784925e-06,0.199973510443773,6.83771164691965e-05,-0.00015879310713561,7.29646865496591e-05,0.199973528641945,0.000187655339422339
0.504,0.559762802919981,-0.292897357110912,0.09593068328499,-8.50667902230206e-05,-4.64097900387816e-06,0.199973656668673,6.81758885456851e-05,-0.000158357205820581,7.32597697783443e-05,0.199973674815806,0.000187328455612786
0.506,0.559762632922752,-0.292897366709585,0.0963306307448473,-8.49306395767079e-05,-4.95725684113157e-06,0.199973803482852,6.79748757281828e-05,-0.000157919951421226,7.35539745430613e-05,0.199973821579692,0.000187001288653917
0.508,0.559762463197423,-0.292897376939939,0.0967305784989214,-8.47948907201078e-05,-5.27265880956306e-06,0.199973950884571,6.77740918941793e-05,-0.000157481350876454,7.38472937314438e-05,0.199973968931857,0.000186673849795335
0.51,0.559762293743189,-0.29289738780022,0.0971305265483856,-8.46595432091312e-05,-5.58718224463738e-06,0.199974098872027,6.75735023492052e-05,-0.000157041411125158,7.41397169351509e-05,0.199974116870494,0.000186346131312521
0.512,0.55976212455925,-0.292897399288668,0.0975304748944095,-8.4524596710711e-05,-5.9008244540637e-06,0.199974247443439,6.73731070932603e-05,-0.000156600100942316,7.44312346132036e-05,0.199974265393818,0.00018601810627084
0.514,0.559761955644802,-0.292897411403518,0.0979304235381593,-8.43900507807581e-05,-6.21358264840665e-06,0.199974396596966,6.7172961637496e-05,-0.000156157406450141,7.47218606433896e-05,0.19997441449998,0.000185689791917588
0.516,0.559761786999047,-0.292897424142999,0.0983303724807974,-8.4255904864161e-05,-6.52545407986426e-06,0.199974546330882,6.69730382263367e-05,-0.000155713331118079,7.50116054340499e-05,0.199974564187251,0.000185361188728786
0.518,0.559761618621183,-0.292897437505334,0.0987303217234828,-8.41221586278528e-05,-6.83643597287897e-06,0.199974696643387,6.67732952264188e-05,-0.000155267868007236,7.53004290865444e-05,0.199974714453826,0.000185032263163819
0.52,0.559761450510412,-0.292897451488742,0.0991302712673709,-8.39888116832554e-05,-7.14652555189321e-06,0.199974847532598,6.65737742711024e-05,-0.00015482099630093,7.55883359376818e-05,0.199974865297815,0.00018470301796706
0.522,0.559761282665936,-0.292897466091436,0.0995302211136132,-8.38558635307684e-05,-7.45571995808269e-06,0.199974998996731,6.63744822992883e-05,-0.000154372712529715,7.58753355284413e-05,0.199975016717429,0.000184373460172103
0.524,0.559761115086958,-0.292897481311622,0.0999301712633578,-8.37233137540582e-05,-7.76401640201207e-06,0.19997515103394,6.61754123720825e-05,-0.00015392300628525,7.61613931643534e-05,0.199975168710819,0.0001840435678725
0.526,0.559760947772681,-0.292897497147502,0.100330121717749,-8.35911618812801e-05,-8.07141198322369e-06,0.199975303642304,6.59765506116904e-05,-0.000153471853281406,7.64465279273762e-05,0.199975321276055,0.000183713327258524
0.528,0.55976078072231,-0.29289751359727,0.100730072477927,-8.34594075516115e-05,-8.37790381513769e-06,0.199975456820052,6.5777931712585e-05,-0.000153019288212652,7.67307545626594e-05,0.199975474411365,0.000183382789708433
0.53,0.559760613935051,-0.292897530659117,0.101130023545029,-8.33280501544297e-05,-8.6834891360743e-06,0.199975610565322,6.55795487358723e-05,-0.000152565279853966,7.70140323042012e-05,0.199975628114879,0.000183051913404565
0.532,0.55976044741011,-0.292897548331227,0.101529974920188,-8.3197089356668e-05,-8.98816493455356e-06,0.199975764876181,6.53813392315072e-05,-0.000152109786571985,7.72963741624277e-05,0.199975782384659,0.000182720650582627
0.534,0.559760281146694,-0.292897566611777,0.101929926604534,-8.30665247975037e-05,-9.29192828236224e-06,0.199975919750819,6.51833795273226e-05,-0.000151652836122285,7.75777792699772e-05,0.19997593721889,0.00018238905533775
0.536,0.559760115144011,-0.29289758549894,0.102329878599192,-8.29363558385587e-05,-9.5947762790427e-06,0.199976075187298,6.49856904400003e-05,-0.000151194414627076,7.78582207386357e-05,0.199976092615629,0.000182057116073429
0.538,0.55975994940127,-0.292897604990882,0.102729830905283,-8.28065820357437e-05,-9.89670594087055e-06,0.199976231183702,6.47881956417073e-05,-0.000150734515147466,7.81377081093825e-05,0.199976248572954,0.000181724807827211
0.54,0.559759783917682,-0.292897625085764,0.103129783523926,-8.26772030559918e-05,-1.01977143396326e-05,0.199976387738131,6.45909228880192e-05,-0.000150273113397325,7.84162561273671e-05,0.199976405088962,0.000181392130906179
0.542,0.559759618692458,-0.292897645781739,0.103529736456236,-8.25482183441916e-05,-1.04977983944598e-05,0.199976544848726,6.43939207511934e-05,-0.000149810195498867,7.86938431085459e-05,0.199976562161786,0.000181059086069471
0.544,0.559759453724809,-0.292897667076957,0.103929689703321,-8.24196273729871e-05,-1.0796955121628e-05,0.199976702513503,6.41971198422908e-05,-0.00014934578573822,7.89704465015139e-05,0.199976719789438,0.000180725663187219
0.546,0.559759289013948,-0.29289768896956,0.10432964326629,-8.22914298648225e-05,-1.10951815374127e-05,0.199976860730512,6.40005340390992e-05,-0.000148879870237595,7.92460966639318e-05,0.199976877969962,0.000180391873308423
0.548,0.55975912455909,-0.292897711457683,0.104729597146243,-8.21636252368307e-05,-1.13924746025784e-05,0.19997701949789,6.38042396694515e-05,-0.000148412414302523,7.95207823200971e-05,0.19997703670149,0.000180057714468725
0.55,0.559758960359447,-0.292897734539458,0.105129551344281,-8.20362129061446e-05,-1.16888311946228e-05,0.199977178813641,6.36081742833027e-05,-0.000147943417933005,7.9794469642902e-05,0.199977195982022,0.000179723154131422
0.552,0.559758796414238,-0.292897758213008,0.105529505861498,-8.19091925396975e-05,-1.19842482743104e-05,0.199977338675768,6.3412324002865e-05,-0.000147472891537381,8.00671820511133e-05,0.199977355809554,0.000179388210915452
0.554,0.559758632722677,-0.292897782476451,0.105929460698984,-8.17825636101332e-05,-1.22787227607723e-05,0.19997749908237,6.32167374003955e-05,-0.000147000786543394,8.03389160752842e-05,0.199977516182179,0.000179052865288659
0.556,0.559758469283984,-0.292897807327899,0.106329415857827,-8.16563255900959e-05,-1.2572251420484e-05,0.199977660031433,6.30214075370005e-05,-0.000146527123767725,8.06096422251156e-05,0.199977677097881,0.000178717123486386
0.558,0.559758306097375,-0.292897832765457,0.10672937133911,-8.15304779799852e-05,-1.28648312558432e-05,0.199977821520938,6.28263066571044e-05,-0.000146051930965951,8.08793865214596e-05,0.199977838554633,0.000178381014996392
0.56,0.559758143162072,-0.292897858787224,0.107129327143911,-8.14050203634675e-05,-1.31564591443478e-05,0.199977983548979,6.2631434760707e-05,-0.00014557515262692,8.11481359538901e-05,0.199978000550524,0.000178044493459716
0.562,0.559757980477294,-0.292897885391294,0.107529283273306,-8.12799522409424e-05,-1.34471318663509e-05,0.199978146113482,6.24368404200659e-05,-0.000145096771403397,8.1415880981428e-05,0.199978163083476,0.000177707562555206
0.564,0.559757818042263,-0.292897912575752,0.107929239728365,-8.11552730017872e-05,-1.37368462299614e-05,0.199978309212503,6.22425028184991e-05,-0.000144616794234276,8.16826294103289e-05,0.199978326151537,0.000177370229404753
0.566,0.559757655856202,-0.292897940338678,0.108329196510156,-8.10309822296684e-05,-1.4025599043288e-05,0.199978472844,6.20483942004312e-05,-0.000144135224589003,8.19483474134852e-05,0.199978489752663,0.000177032476777499
0.568,0.559757493918334,-0.292897968678148,0.108729153619741,-8.09070794249855e-05,-1.43133871283174e-05,0.199978637005892,6.18545492603317e-05,-0.000143652048589792,8.22130427971523e-05,0.199978653884766,0.000176694314379975
0.57,0.559757332227884,-0.292897997592227,0.10912911105818,-8.0783564032627e-05,-1.46002072376472e-05,0.199978801696171,6.16609679982005e-05,-0.000143167245419962,8.2476723367586e-05,0.199978818545832,0.000176355734335654
0.572,0.559757170784078,-0.292898027078977,0.109529068826526,-8.06604355529927e-05,-1.48860561099973e-05,0.199978966912786,6.14676573529315e-05,-0.000142680846304532,8.27394038699358e-05,0.199978983733805,0.000176016776914553
0.574,0.559757009586142,-0.292898057136451,0.109929026925831,-8.05376934032153e-05,-1.51709306228653e-05,0.199979132653787,6.12745965078431e-05,-0.000142192813079589,8.30010738958608e-05,0.199979149446731,0.000175677404741054
0.576,0.559756848633304,-0.292898087762699,0.110328985357141,-8.04153371669613e-05,-1.54548273623156e-05,0.199979298917081,6.10817646462535e-05,-0.000141703111050662,8.3261684005742e-05,0.199979315682511,0.000175337564934638
0.578,0.559756687924793,-0.292898118955761,0.110728944121499,-8.02933663446303e-05,-1.5737743067068e-05,0.199979465700523,6.08892242182079e-05,-0.000141211788790008,8.35212489447289e-05,0.199979482438994,0.000174997331249526
0.58,0.559756527459839,-0.292898150713672,0.111128903219943,-8.01717802700885e-05,-1.60196745174756e-05,0.199979633002077,6.06969752237063e-05,-0.000140718801194817,8.37797869274181e-05,0.199979649714139,0.000174656681832151
0.582,0.559756367237672,-0.292898183034459,0.111528862653507,-8.00505784437355e-05,-1.63006182718472e-05,0.19997980081967,6.05049690904912e-05,-0.000140224144795642,8.40372849433834e-05,0.199979817505868,0.00017431559691825
0.584,0.559756207257525,-0.292898215916145,0.111928822423222,-7.99297603937265e-05,-1.65805710966582e-05,0.199979969151217,6.03132266352446e-05,-0.000139727847348059,8.42937403905396e-05,0.19997998581209,0.000173974111007082
0.586,0.55975604751863,-0.292898249356743,0.112328782530112,-7.98093255371945e-05,-1.68595296612395e-05,0.199980137994632,6.01217756135419e-05,-0.000139229874157598,8.45491489320781e-05,0.199980154630714,0.00017363220998998
0.588,0.559755888020223,-0.292898283354263,0.1127287429752,-7.96892732912723e-05,-1.71374905932886e-05,0.199980307347813,5.99305743920197e-05,-0.000138730211346471,8.48034906186789e-05,0.199980323959632,0.000173289864990155
0.59,0.559755728761537,-0.292898317906706,0.113128703759503,-7.95696032396264e-05,-1.74144505066254e-05,0.199980477208594,5.97396368484659e-05,-0.000138228858914679,8.50567758586828e-05,0.199980493796675,0.000172947092392775
0.592,0.55975556974181,-0.292898353012065,0.113528664884035,-7.94503147438785e-05,-1.76904060289473e-05,0.199980647574916,5.95490115551378e-05,-0.000137725806453881,8.53090176625159e-05,0.199980664139776,0.000172603913730568
0.594,0.559755410960278,-0.29289838866833,0.113928626349803,-7.93314071934059e-05,-1.79653537324409e-05,0.199980818444665,5.93586707564597e-05,-0.000137221043555735,8.55601856725174e-05,0.199980834986816,0.000172260302916297
0.596,0.559755252416181,-0.29289842487348,0.114328588157813,-7.92128800608526e-05,-1.82392902031703e-05,0.199980989815659,5.9168586696856e-05,-0.000136714591036924,8.58102781539637e-05,0.199981006335608,0.000171916272909103
0.598,0.559755094108758,-0.292898461625491,0.114728550309066,-7.90947328466184e-05,-1.85122120965886e-05,0.199981161685778,5.89787871319025e-05,-0.000136206428080765,8.60593037804724e-05,0.199981178184028,0.000171571827959168
0.6,0.55975493603725,-0.292898498922329,0.115128512804556,-7.8976964912325e-05,-1.87841159154933e-05,0.199981334052874,5.8789272061599e-05,-0.000135696537340024,8.63072400006381e-05,0.199981350529921,0.000171226950075428
0.602,0.559754778200898,-0.292898536761954,0.115528475645277,-7.8859575758372e-05,-1.90549982459487e-05,0.199981506914738,5.86000414859455e-05,-0.000135184932692489,8.65541032943339e-05,0.199981523371073,0.000170881665740692
0.604,0.559754620598947,-0.292898575142322,0.115928438832215,-7.87425647463812e-05,-1.93248556462633e-05,0.199981680269287,5.84111231605177e-05,-0.00013467157944369,8.67999066719859e-05,0.199981696705396,0.000170535971035429
0.606,0.559754463230639,-0.292898614061377,0.116328402366354,-7.862593126573e-05,-1.95936845637234e-05,0.199981854114364,5.82224754519522e-05,-0.00013415646371584,8.70445980918898e-05,0.199981870530727,0.000170189821850401
0.608,0.559754306095221,-0.29289865351706,0.116728366248673,-7.85096748445734e-05,-1.98614815011266e-05,0.199982028447679,5.80341261158245e-05,-0.00013363961673396,8.72881905644717e-05,0.199982044844771,0.00016984326647485
0.61,0.55975414919194,-0.292898693507303,0.117128330480145,-7.83937947612667e-05,-2.01282430306593e-05,0.199982203267127,5.78460612743469e-05,-0.000133121045436946,8.75306979675194e-05,0.199982219645416,0.000169496320402131
0.612,0.559753992520042,-0.292898734030032,0.117528295061741,-7.8278290599476e-05,-2.03939656828744e-05,0.199982378570471,5.76582809275194e-05,-0.00013260071166088,8.77721046885215e-05,0.199982394930424,0.000169148953452102
0.614,0.559753836078777,-0.292898775083166,0.117928259994427,-7.81631616375566e-05,-2.06586458773028e-05,0.199982554355545,5.74708405864932e-05,-0.00013207859458908,8.80124315441599e-05,0.199982570697619,0.000168801187118634
0.616,0.559753679867396,-0.292898816664615,0.118328225279163,-7.80484072371301e-05,-2.09222800612307e-05,0.199982730620197,5.72836708623292e-05,-0.00013155470116044,8.82516386357945e-05,0.199982746944846,0.000168452990673301
0.618,0.559753523885149,-0.292898858772286,0.118728190916908,-7.79340269541073e-05,-2.11848646819446e-05,0.1999829073621,5.7096799510603e-05,-0.000131029041783303,8.84897120856375e-05,0.19998292366977,0.000168104382602012
0.62,0.559753368131288,-0.292898901404074,0.119128156908612,-7.78200200390877e-05,-2.1446396228364e-05,0.199983084579046,5.69102542868904e-05,-0.000130501630335455,8.87266995985846e-05,0.199983100870182,0.000167755416558953
0.622,0.559753212605068,-0.292898944557871,0.119528123255224,-7.77063859369597e-05,-2.17068712032864e-05,0.199983262268898,5.67239866189339e-05,-0.000129972425183533,8.89625725516984e-05,0.199983278543936,0.00016740603717026
0.624,0.559753057305744,-0.292898988231559,0.119928089957687,-7.75931240926119e-05,-2.19662859290981e-05,0.199983440429336,5.6538038140097e-05,-0.000129441402041408,8.91973057914885e-05,0.199983456688708,0.000167056235081594
0.626,0.559752902232572,-0.292899032423015,0.120328057016941,-7.74802337843993e-05,-2.2224636811452e-05,0.199983619058121,5.63524227281675e-05,-0.000128908599072996,8.94309331450626e-05,0.199983635302254,0.000166706071471597
0.628,0.559752747384809,-0.292899077130106,0.12072802443392,-7.73677144016992e-05,-2.24819203253901e-05,0.199983798153069,5.61671056886758e-05,-0.000128374005869958,8.96634329283773e-05,0.199983814382383,0.000166355523951098
0.63,0.559752592761714,-0.292899122350696,0.121127992209554,-7.72555653616446e-05,-2.27381328349318e-05,0.199983977711853,5.5982093960516e-05,-0.000127837591207269,8.98947886615597e-05,0.199983993926764,0.000166004571016546
0.632,0.559752438362548,-0.292899168082638,0.121527960344767,-7.71437860258572e-05,-2.29932706902191e-05,0.199984157732223,5.57973944825818e-05,-0.000127299365493272,9.01250133550357e-05,0.199984173933141,0.000165653239383599
0.634,0.55975228418657,-0.292899214323779,0.121927928840482,-7.70323757837143e-05,-2.32473302969049e-05,0.199984338211907,5.56130141937671e-05,-0.000126759339136306,9.03540966004645e-05,0.199984354399237,0.000165301543182377
0.636,0.559752130233045,-0.292899261071959,0.122327897697615,-7.69213339690821e-05,-2.35003080467644e-05,0.19998451914861,5.54289669718599e-05,-0.000126217498258585,9.05820479388252e-05,0.199984535322751,0.000164949491223875
0.638,0.559751976501234,-0.292899308325011,0.122727866917077,-7.68106599158268e-05,-2.37522002899393e-05,0.199984700540098,5.52452389390722e-05,-0.000125673835921214,9.0808860431224e-05,0.199984716701445,0.000164597079540935
0.64,0.559751822990405,-0.29289935608076,0.123127836499775,-7.67003530133258e-05,-2.40030033904492e-05,0.199984882384051,5.50618300954042e-05,-0.000125128331307511,9.10345149957025e-05,0.199984898532992,0.000164244291680899
0.642,0.559751669699822,-0.292899404337024,0.123527806446613,-7.65904125954452e-05,-2.42527136151693e-05,0.199985064678158,5.48787543186435e-05,-0.000124580994825818,9.12590272447721e-05,0.199985080815076,0.000163891159008101
0.644,0.559751516628755,-0.292899453091614,0.123927776758488,-7.64808379960513e-05,-2.45013273697525e-05,0.19998524742016,5.46959769143207e-05,-0.000124031833415028,9.14823789638363e-05,0.199985263545433,0.000163537675328311
0.646,0.55975136377647,-0.292899502342334,0.124327747436294,-7.6371628687788e-05,-2.47488409488294e-05,0.199985430607674,5.4513546454693e-05,-0.000123480826258459,9.17045640813629e-05,0.199985446721674,0.000163183848079068
0.648,0.55975121114224,-0.292899552086978,0.124727718480919,-7.62627838102325e-05,-2.49952506747863e-05,0.199985614238417,5.43314837564423e-05,-0.000122927990703347,9.19255956077779e-05,0.199985630341511,0.000162829715203901
0.65,0.559751058725335,-0.292899602323337,0.125127689893247,-7.61543027527622e-05,-2.52405529116428e-05,0.199985798310057,5.41497124917356e-05,-0.000122373292055222,9.21454527263998e-05,0.199985814402607,0.000162475224048233
0.652,0.559750906525029,-0.29289965304919,0.125527661674159,-7.60461849602655e-05,-2.54847438430072e-05,0.199985982820228,5.39682742939362e-05,-0.000121816726844637,9.23641493150162e-05,0.19998599890259,0.000162120404786359
0.654,0.559750754540595,-0.292899704262312,0.125927633824528,-7.59384296555864e-05,-2.57278198190214e-05,0.199986167766654,5.3787183040832e-05,-0.000121258340174402,9.25816680263924e-05,0.199986183839179,0.000161765297192779
0.656,0.55975060277131,-0.292899755960469,0.126327606345226,-7.58310362281022e-05,-2.59697772037048e-05,0.1999863531469,5.36064317935291e-05,-0.000120698107758388,9.27980071258049e-05,0.199986369209934,0.000161409890876026
0.658,0.55975045121645,-0.292899808141421,0.126727579237116,-7.57240039284123e-05,-2.62106122500549e-05,0.199986538958682,5.34260413687093e-05,-0.000120135991432679,9.3013189164659e-05,0.199986555012565,0.000161054188683264
0.66,0.559750299875294,-0.292899860802918,0.12712755250106,-7.56173320626274e-05,-2.64503211694356e-05,0.199986725199656,5.32459840107968e-05,-0.00011957199813617,9.3227179448485e-05,0.199986741244722,0.000160698178395009
0.662,0.559750148747122,-0.292899913942705,0.127527526137915,-7.55110199923691e-05,-2.66889002425996e-05,0.1999869118674,5.30662527808978e-05,-0.000119006145216094,9.34399797120066e-05,0.199986927903978,0.000160341883461497
0.664,0.559749997831214,-0.292899967558519,0.12792750014853,-7.54050670515038e-05,-2.69263457502999e-05,0.199987098959575,5.2886868495694e-05,-0.000118438453489134,9.36515916899471e-05,0.199987114987989,0.00015998533917281
0.666,0.559749847126854,-0.292900021648088,0.128327474533753,-7.52994725183864e-05,-2.71626540565561e-05,0.199987286473767,5.27078519718671e-05,-0.00011786889866916,9.38620032392422e-05,0.199987302494335,0.000159628539381442
0.668,0.559749696633324,-0.292900076209135,0.128727449294425,-7.51942356436163e-05,-2.73978213449766e-05,0.199987474407588,5.25291962705232e-05,-0.000117297435653363,9.40712230335094e-05,0.199987490420625,0.000159271465977752
0.67,0.559749546349911,-0.292900131239374,0.129127424431383,-7.50893557333043e-05,-2.76318437991696e-05,0.199987662758659,5.23508666971928e-05,-0.000116724088727871,9.42792510727485e-05,0.199987678764471,0.000158914138188323
0.672,0.559749396275901,-0.292900186736511,0.12952739994546,-7.49848321768275e-05,-2.78647176998881e-05,0.199987851524592,5.21728840685575e-05,-0.000116148878709366,9.44860821527892e-05,0.199987867523482,0.000158556587936477
0.674,0.559749246410583,-0.292900242698245,0.129927375837482,-7.488066419703e-05,-2.8096439314007e-05,0.199988040702988,5.19952969568748e-05,-0.0001155718021284,9.46916937222263e-05,0.199988056695253,0.000158198828101929
0.676,0.559749096753245,-0.292900299122268,0.130327352108272,-7.4776850989e-05,-2.83270049084017e-05,0.199988230291367,5.18180498509934e-05,-0.000114992838168293,9.48960892505068e-05,0.199988246277299,0.000157840840327842
0.678,0.559748947303179,-0.292900356006264,0.130727328758647,-7.46733919976261e-05,-2.85564106666802e-05,0.199988420287345,5.16411358120194e-05,-0.000114411986829043,9.50992791459714e-05,0.199988436267229,0.000157482642002882
0.68,0.559748798059677,-0.29290041334791,0.131127305789421,-7.4570286445752e-05,-2.87846528557178e-05,0.199988610688484,5.14646172899979e-05,-0.000113829255049546,9.53012599391733e-05,0.199988626662603,0.0001571242701938
0.682,0.559748649022033,-0.292900471144876,0.131527283201401,-7.44675335284661e-05,-2.90117276868784e-05,0.199988801492384,5.12884734682472e-05,-0.000113244628952014,9.55020246912185e-05,0.199988817461013,0.000156765717608489
0.684,0.559748500189543,-0.292900529394821,0.13192726099539,-7.4365132551879e-05,-2.92376313715259e-05,0.199988992696583,5.11126765911917e-05,-0.000112658122414233,9.57015577895958e-05,0.199989008659991,0.000156406989669808
0.686,0.559748351561503,-0.292900588095401,0.132327239172187,-7.42630828221013e-05,-2.94623601765353e-05,0.199989184298616,5.09372335977253e-05,-0.000112069738905651,9.58998609690286e-05,0.199989200257068,0.000156048106296902
0.688000000000001,0.559748203137211,-0.292900647244262,0.132727217732585,-7.41613836174881e-05,-2.96859103271485e-05,0.199989376296027,5.07621653045298e-05,-0.000111479447201246,9.60969324947935e-05,0.199989392249784,0.000155689065157476
0.690000000000001,0.559748054915968,-0.292900706839042,0.133127196677371,-7.40600341608832e-05,-2.99082779653403e-05,0.199989568686345,5.05874855893928e-05,-0.000110887264648252,9.62927914488486e-05,0.199989584635661,0.000155329909690439
0.692000000000001,0.559747906897075,-0.292900766877374,0.13352717600733,-7.39590336751305e-05,-3.01294593857415e-05,0.199989761467192,5.04131805745267e-05,-0.000110293208593903,9.6487411810342e-05,0.199989777412315,0.000154970646496156
0.694000000000001,0.559747759079834,-0.29290082735688,0.13392715572324,-7.38583814385851e-05,-3.03494507997159e-05,0.199989954635993,5.02392225043557e-05,-0.000109697261690966,9.66807710278682e-05,0.199989970577167,0.000154611255045943
0.696000000000001,0.559747611463549,-0.292900888275177,0.134327135825874,-7.37580767851131e-05,-3.05682484325054e-05,0.199990148190276,5.00656530122434e-05,-0.0001090994135311,9.68728985917266e-05,0.19999016412774,0.000154251775114373
0.698000000000001,0.559747464047526,-0.292900949629874,0.134727116316001,-7.36581188265361e-05,-3.07858484538403e-05,0.199990342127587,4.98924790370836e-05,-0.00010849966758375,9.70637823588526e-05,0.199990358061573,0.000153892219348662
0.700000000000001,0.559747316831074,-0.292901011418571,0.135127097194385,-7.35585068689647e-05,-3.10022471028404e-05,0.199990536445406,4.97196658844067e-05,-0.000107898041196153,9.72534101861821e-05,0.199990552376142,0.000153532596742403
0.702000000000001,0.559747169813499,-0.292901073638862,0.135527078461783,-7.34592401629985e-05,-3.12174406186249e-05,0.199990731141228,4.95472551875764e-05,-0.000107294517021073,9.74417994209497e-05,0.199990747068937,0.000153172935448142
0.704000000000001,0.559747022994113,-0.292901136288333,0.13592706011895,-7.33603178482144e-05,-3.14314251709246e-05,0.199990926212604,4.93752261299107e-05,-0.000106689115875191,9.76289361853676e-05,0.199990942137502,0.000152813250676427
0.706000000000001,0.559746876372228,-0.292901199364563,0.136327042166633,-7.32617392584788e-05,-3.16441970821257e-05,0.199991121656973,4.92035509558341e-05,-0.000106081813472381,9.78147909891368e-05,0.199991137579273,0.000152453513939498
0.708000000000001,0.559746729947156,-0.292901262865122,0.136727024605577,-7.31635036443911e-05,-3.18557524248142e-05,0.199991317471768,4.90322712987101e-05,-0.000105472602873746,9.79993759753216e-05,0.199991333391676,0.000152093758179702
0.710000000000001,0.559746583718213,-0.292901326787572,0.13712700743652,-7.3065610173284e-05,-3.20660874936207e-05,0.199991513654476,4.88614079752203e-05,-0.000104861539590439,9.81827171647741e-05,0.199991529572195,0.000151734062176086
0.712000000000001,0.559746437684715,-0.292901391129472,0.137526990660195,-7.29680580124902e-05,-3.22751985831759e-05,0.199991710202636,4.8690940168683e-05,-0.000104248561172415,9.8364805883877e-05,0.19999172611836,0.000151374387521806
0.714000000000001,0.559746291845981,-0.292901455888367,0.137926974277331,-7.28708464126093e-05,-3.24830817383104e-05,0.1999919071137,4.85208331846287e-05,-0.000103633688436355,9.85455952950964e-05,0.19999192302762,0.000151014724394408
0.716000000000001,0.55974614620133,-0.292901521061799,0.13832695828865,-7.27739746797517e-05,-3.26897333369214e-05,0.199992104385017,4.8351114778633e-05,-0.000103016969954517,9.87251010109435e-05,0.19999212029732,0.000150655142522807
0.718000000000001,0.559746000750082,-0.2929015866473,0.138726942694871,-7.26774419534947e-05,-3.28951496181284e-05,0.199992302014104,4.81818127062716e-05,-0.000102398350215749,9.89033421133766e-05,0.199992317924969,0.000150295642930076
0.720000000000001,0.559745855491562,-0.292901652642397,0.139126927496707,-7.25812474289266e-05,-3.30993267377843e-05,0.199992499998386,4.80128992119688e-05,-0.000101777836158945,9.90802977857141e-05,0.199992515907989,0.000149936225887013
0.722000000000001,0.559745710425092,-0.292901719044607,0.139526912694865,-7.24853903566468e-05,-3.33022609627642e-05,0.199992698335295,4.78443881735124e-05,-0.00010115544513134,9.92559767015732e-05,0.199992714243806,0.000149576931611798
0.724000000000001,0.55974556555,-0.292901785851441,0.139926898290048,-7.23898698762326e-05,-3.35039485183097e-05,0.199992897022293,4.76762865297963e-05,-0.000100531184071828,9.94303563095488e-05,0.199992912929877,0.00014921777046987
0.726000000000001,0.559745420865613,-0.292901853060401,0.140326884282954,-7.22946852105277e-05,-3.37043856990515e-05,0.19999309605672,4.75085942808206e-05,-9.99050356331742e-05,9.96034262013e-05,0.199993111963537,0.000148858742391716
0.728000000000001,0.559745276371259,-0.292901920668984,0.140726870674275,-7.21998354991093e-05,-3.39035686608424e-05,0.199993295435997,4.73412836710096e-05,-9.92770067542724e-05,9.97752123976791e-05,0.199993311342201,0.000148499879524223
0.730000000000001,0.559745132066271,-0.292901988674676,0.141126857464698,-7.21053200758436e-05,-3.41014937260686e-05,0.19999349515757,4.71743408225755e-05,-9.86471321295922e-05,9.99457201028563e-05,0.199993511063309,0.000148141223419804
0.732000000000001,0.559744987949979,-0.292902057074959,0.141526844654905,-7.2011138135819e-05,-3.42981571893608e-05,0.199993695218878,4.7007862880033e-05,-9.80153701257684e-05,0.000100114912887639,0.199993711124298,0.00014778277212158
0.734000000000001,0.559744844021718,-0.292902125867305,0.141926832245573,-7.19172886243235e-05,-3.44935552065717e-05,0.199993895617222,4.68418012711247e-05,-9.73817415594862e-05,0.000100282771670068,0.199993911522461,0.000147424530622665
0.736000000000001,0.559744700280825,-0.292902195049179,0.142326820237374,-7.18237709307345e-05,-3.46876841555987e-05,0.199994096349965,4.66760935458054e-05,-9.67462672474272e-05,0.000100449348491849,0.199994112255157,0.000147066548023146
0.738000000000001,0.559744556726635,-0.292902264618041,0.142726808630973,-7.17305842501403e-05,-3.48805402755614e-05,0.199994297414616,4.65108229708022e-05,-9.61089124951186e-05,0.000100614615597405,0.19999431331989,0.000146708829271552
0.740000000000001,0.559744413358488,-0.29290233457134,0.143126797427032,-7.16377276388513e-05,-3.50721198055792e-05,0.199994498808427,4.63459964850088e-05,-9.54697154664785e-05,0.000100778546965885,0.199994514713908,0.000146351404127169
0.742000000000001,0.559744270175724,-0.29290240490652,0.143526786626207,-7.15452002642002e-05,-3.52624191374273e-05,0.199994700528803,4.61815516383801e-05,-9.48286761615068e-05,0.000100941175557034,0.199994716434609,0.000145994295974563
0.744000000000001,0.559744127177687,-0.292902475621017,0.143926776229147,-7.14530014322978e-05,-3.54514345102252e-05,0.199994902573129,4.60175092475978e-05,-9.41857598857342e-05,0.000101102458002766,0.199994918479373,0.000145637479849134
0.746000000000001,0.559743984363718,-0.292902546712258,0.144326766236499,-7.13611302272098e-05,-3.56391621769702e-05,0.199995104938635,4.58539109460254e-05,-9.35410013336301e-05,0.000101262416854486,0.199995120845426,0.000145281028172146
0.748000000000001,0.559743841733166,-0.292902618177666,0.144726756648902,-7.12695857885137e-05,-3.58255985155597e-05,0.199995307622797,4.56907151002994e-05,-9.2894435199664e-05,0.000101421065989982,0.199995323530238,0.000144924981159169
0.750000000000001,0.559743699285375,-0.292902690014653,0.145126747466991,-7.11783673668086e-05,-3.60107399177689e-05,0.199995510622899,4.55279286493137e-05,-9.22460198504726e-05,0.000101578353367548,0.199995526531089,0.000144569299431841
0.752000000000001,0.559743557019696,-0.292902762220625,0.145526738691394,-7.10874740739164e-05,-3.61945825949616e-05,0.19999571393621,4.5365579348644e-05,-9.1595737938821e-05,0.00010173432062055,0.199995729845242,0.000144214031877346
0.754000000000001,0.559743414935479,-0.292902834792983,0.145926730322735,-7.09969050494141e-05,-3.63771228695242e-05,0.199995917560182,4.52036741371841e-05,-9.09436553842013e-05,0.000101888959075369,0.199995933470145,0.000143859238812123
0.756000000000001,0.559743273032076,-0.292902907729117,0.146326722361634,-7.09066593773677e-05,-3.65583572164984e-05,0.199996121492046,4.50421644426768e-05,-9.02897721866135e-05,0.000102042227098642,0.199996137403024,0.000143504897653155
0.758000000000001,0.559743131308841,-0.292902981026412,0.146726714808704,-7.08167363916434e-05,-3.67382819582706e-05,0.19999632572909,4.48810363873342e-05,-8.96340536515882e-05,0.000102194145507051,0.199996341641161,0.000143151019476402
0.760000000000001,0.55974298976513,-0.292903054682245,0.147126707664551,-7.07271352318183e-05,-3.69168934311048e-05,0.199996530268628,4.47203871156709e-05,-8.89765240652539e-05,0.000102344735117277,0.199996546181865,0.000142797687883018
0.762000000000001,0.559742848400301,-0.292903128693985,0.147526700929778,-7.06378548431807e-05,-3.70941880545317e-05,0.199996735108031,4.45601749943236e-05,-8.83171938359516e-05,0.000102493961234851,0.199996751022503,0.000142444894651205
0.764000000000001,0.559742707213711,-0.292903203058997,0.147926694604983,-7.0548894531841e-05,-3.72701622064486e-05,0.199996940244473,4.44003583899288e-05,-8.76560490858934e-05,0.00010264179783892,0.199996956160245,0.000142092622715286
0.766000000000001,0.559742566204722,-0.292903277774634,0.148326688690756,-7.0460253409621e-05,-3.74448122508752e-05,0.199997145675222,4.42409997525317e-05,-8.69931106317611e-05,0.00010278829697119,0.199997161592352,0.00014174096567588
0.768000000000001,0.559742425372697,-0.292903352838246,0.148726683187684,-7.03719305328309e-05,-3.76181346489756e-05,0.199997351397661,4.40820574487688e-05,-8.63283992902363e-05,0.000102933430876084,0.199997367316203,0.000141389927168991
0.770000000000001,0.559742284717,-0.292903428247173,0.149126678096347,-7.02839251798259e-05,-3.77901258480362e-05,0.199997557408946,4.39235314786401e-05,-8.56619011835313e-05,0.000103077187410538,0.199997573328949,0.000141039513954067
0.772000000000001,0.559742144236997,-0.292903503998749,0.14952667341732,-7.01962364069163e-05,-3.79607822537098e-05,0.199997763706411,4.37654495977213e-05,-8.49936267199868e-05,0.000103219578717617,0.19999777962792,0.000140689774298452
0.774000000000001,0.559742003932055,-0.292903580090302,0.149926669151172,-7.0108863381435e-05,-3.81301003549161e-05,0.19999797028726,4.36078048671184e-05,-8.43235897773908e-05,0.000103360582245915,0.199997986210315,0.000140340722530878
0.776000000000001,0.559741863801543,-0.292903656519151,0.150326665298469,-7.00218051874479e-05,-3.82980766128193e-05,0.19999817714874,4.34505764701498e-05,-8.36517660696145e-05,0.00010350021187322,0.199998193073374,0.000139992372720642
0.778000000000001,0.559741723844834,-0.292903733282608,0.150726661859767,-6.99350610755544e-05,-3.84647074191946e-05,0.199998384288108,4.32937852234971e-05,-8.29782111078092e-05,0.00010363844678285,0.199998400214352,0.000139644774371231
0.780000000000001,0.559741584061299,-0.29290381037798,0.151126658835621,-6.98486300465539e-05,-3.86299894572506e-05,0.199998591702527,4.31374796994177e-05,-8.23029214225279e-05,0.000103775307791487,0.199998607630406,0.000139297981093476
0.782000000000001,0.559741444450314,-0.292903887802566,0.151526656226577,-6.97625111567567e-05,-3.87939191048847e-05,0.199998799389339,4.29815766311847e-05,-8.1625865788748e-05,0.000103910777551896,0.199998815318874,0.000138951961435976
0.784000000000001,0.559741305011254,-0.292903965553657,0.151926654033178,-6.96767037400291e-05,-3.89564929204056e-05,0.199999007345637,4.28260898965859e-05,-8.0947092778727e-05,0.000104044810961268,0.199999023276844,0.000138606740431785
0.786000000000001,0.559741165743499,-0.292904043628538,0.15232665225596,-6.95912067971704e-05,-3.91177074759996e-05,0.199999215568583,4.26710611289848e-05,-8.0266578106336e-05,0.000104177475673817,0.199999231501473,0.000138262393500701
0.788000000000001,0.559741026646427,-0.292904122024487,0.152726650895453,-6.95060194955132e-05,-3.92775592328309e-05,0.19999942405554,4.25164833894875e-05,-7.95843668743856e-05,0.000104308754342308,0.199999439990119,0.000137918958243779
0.790000000000001,0.559740887719421,-0.292904200738775,0.153126649952182,-6.94211408636124e-05,-3.94360449434971e-05,0.1999996328036,4.23623497392e-05,-7.89004590828756e-05,0.000104438594925038,0.19999964873987,0.000137576419595914
0.792000000000001,0.559740748961864,-0.292904279768667,0.153526649426667,-6.93365700965564e-05,-3.95931610691624e-05,0.19999984180992,4.22086324225468e-05,-7.82148200373366e-05,0.000104567032116476,0.199999857747877,0.00013723480218262
0.794000000000001,0.55974061037314,-0.292904359111419,0.153926649319422,-6.92523063339223e-05,-3.97489042236465e-05,0.200000051071729,4.2055386950679e-05,-7.7527494840579e-05,0.000104694058977728,0.200000067011367,0.000136894170851279
0.796000000000001,0.559740471952638,-0.292904438764283,0.154326649630954,-6.91683485487537e-05,-3.99032710485247e-05,0.200000260586155,4.19025716902332e-05,-7.68384973703905e-05,0.000104819663365729,0.200000276527463,0.000136554538630173
0.798000000000001,0.559740333699746,-0.292904518724503,0.154726650361766,-6.90846960471613e-05,-4.0056258213128e-05,0.200000470350382,4.17501866412095e-05,-7.61478310962182e-05,0.000104943836606863,0.200000486293342,0.000136215928242633
0.800000000000001,0.559740195613854,-0.292904598989316,0.155126651512356,-6.90013478021888e-05,-4.02078623729096e-05,0.200000680361502,4.15982734369713e-05,-7.54554960180619e-05,0.000105066580435853,0.200000696306092,0.00013587838149151
0.802000000000001,0.559740057694355,-0.292904679555953,0.155526653083212,-6.89183029534134e-05,-4.03580801972003e-05,0.200000890616704,4.14467765663673e-05,-7.47615129526035e-05,0.00010518791046521,0.2000009065629,0.000135541933049303
0.804000000000001,0.559739919940642,-0.292904760421637,0.155926655074822,-6.88355606959234e-05,-4.050690842472e-05,0.200001101113144,4.12957446016548e-05,-7.40658818998429e-05,0.000105307797204634,0.200001117060915,0.000135206603151987
0.806000000000001,0.559739782352112,-0.292904841583586,0.156326657487665,-6.87531199750068e-05,-4.06543437247997e-05,0.200001311847893,4.114517060394e-05,-7.33686063292271e-05,0.000105426252797192,0.200001327797206,0.000134872429493866
0.808000000000001,0.559739644928162,-0.292904923039012,0.156726660322214,-6.86709800135076e-05,-4.08003828500369e-05,0.200001522818155,4.09950129398561e-05,-7.26697139963316e-05,0.000105543254691476,0.20000153876897,0.000134539425556665
0.810000000000001,0.559739507668192,-0.292905004785118,0.157126663578938,-6.85891399232474e-05,-4.0945022580785e-05,0.200001734020912,4.0845327120561e-05,-7.19692222483914e-05,0.000105658795948593,0.200001749973185,0.000134207640840343
0.812000000000001,0.559739370571603,-0.292905086819102,0.157526667258298,-6.85075987050254e-05,-4.10882597390305e-05,0.200001945453339,4.06961131460548e-05,-7.12671172076184e-05,0.000105772906058843,0.200001961407023,0.00013387712006319
0.814000000000001,0.559739233637797,-0.292905169138157,0.157926671360751,-6.84263554706632e-05,-4.12300910496155e-05,0.200002157112536,4.05473155051794e-05,-7.05634092823536e-05,0.000105885539919415,0.200002173067579,0.000133547845689294
0.816000000000001,0.559739096866181,-0.292905251739466,0.158326675886748,-6.83454094430047e-05,-4.13705133761599e-05,0.200002368995498,4.039895501462e-05,-6.98581401059605e-05,0.000105996728755331,0.200002384951845,0.000133219900210774
0.818000000000001,0.55973896025616,-0.29290533462021,0.158726680836733,-6.82647596506047e-05,-4.15095236100393e-05,0.200002581099451,4.02510941244216e-05,-6.91512923312042e-05,0.000106106472566592,0.200002597057039,0.000132893323119762
0.820000000000001,0.559738823807142,-0.292905417777561,0.159126686211146,-6.8184405066507e-05,-4.16471185454847e-05,0.200002793421389,4.01036703845392e-05,-6.84428798358727e-05,0.00010621472798511,0.200002809380154,0.000132568098045836
0.822000000000001,0.559738687518539,-0.292905501208685,0.159526692010418,-6.81043449690665e-05,-4.17832951293828e-05,0.200003005958363,3.99566352227154e-05,-6.77329199672005e-05,0.000106321514092844,0.200003021918236,0.000132244264543303
0.824000000000001,0.559738551389762,-0.292905584910741,0.159926698234979,-6.80245785256161e-05,-4.19180502253535e-05,0.200003218707445,3.98100927223588e-05,-6.702141966408e-05,0.000106426808338389,0.200003234668353,0.000131921869716312
0.826000000000001,0.559738415420225,-0.292905668880885,0.160326704885248,-6.79451045981771e-05,-4.20513808080391e-05,0.200003431665596,3.9664063700151e-05,-6.6308410151537e-05,0.000106530631538426,0.200003447627461,0.000131600982754727
0.828000000000001,0.559738279609344,-0.292905753116265,0.160726711961641,-6.78659222708155e-05,-4.21832838659597e-05,0.200003644829971,3.95184301948958e-05,-6.55938810212308e-05,0.000106632983692956,0.200003660792712,0.000131281593392823
0.830000000000001,0.559738143956536,-0.292905837614021,0.161126719464568,-6.77870308773975e-05,-4.2313756332124e-05,0.200003858197531,3.93732338399566e-05,-6.48778600287336e-05,0.000106733830107508,0.200003874161061,0.000130963730682744
0.832000000000001,0.55973800846122,-0.29290592237129,0.161526727394431,-6.77084293354557e-05,-4.24427953060746e-05,0.200004071765292,3.92285370853784e-05,-6.41603541129409e-05,0.000106833195068212,0.200004087729522,0.00013064746737017
0.834000000000001,0.559737873122819,-0.292906007385202,0.161926735751629,-6.7630116729056e-05,-4.25703977485758e-05,0.200004285530311,3.90842636033284e-05,-6.34413563349589e-05,0.000106931057758386,0.200004301495147,0.000130332791224469
0.836000000000001,0.559737737940754,-0.292906092652881,0.162326744536553,-6.75520922810424e-05,-4.26965607314144e-05,0.200004499489523,3.89404342104882e-05,-6.27209187364918e-05,0.000107027412973859,0.200004515454866,0.00013001976077323
0.838000000000001,0.55973760291445,-0.292906178171445,0.162726753749587,-6.7474354992214e-05,-4.28212814235218e-05,0.200004713639963,3.87970974791152e-05,-6.19990482564336e-05,0.000107122272857696,0.200004729605713,0.000129708434959744
0.840000000000001,0.559737468043334,-0.292906263938007,0.163126763391113,-6.73969038911259e-05,-4.29445569244402e-05,0.200004927978614,3.86542187147398e-05,-6.12757136697616e-05,0.000107215611389044,0.200004943944664,0.000129398798432258
0.842000000000001,0.559737333326834,-0.292906349949673,0.163526773461502,-6.73197381173551e-05,-4.30663842782008e-05,0.200005142502409,3.85117493451048e-05,-6.05509392626046e-05,0.000107307426833181,0.200005158468649,0.000129090878596291
0.844000000000001,0.559737198764381,-0.292906436203544,0.163926783961122,-6.72428568937455e-05,-4.31867606814906e-05,0.200005357208321,3.83697518202552e-05,-5.98248013627955e-05,0.00010739773653734,0.200005373174638,0.000128784775987652
0.846000000000001,0.559737064355406,-0.292906522696715,0.164326794890335,-6.71662591100741e-05,-4.3305683483652e-05,0.200005572093355,3.82282400179789e-05,-5.90972687453117e-05,0.000107486526623734,0.200005588059631,0.00012848050013003
0.848000000000001,0.559736930099345,-0.292906609426278,0.164726806249496,-6.70899439336736e-05,-4.34231497564718e-05,0.200005787154428,3.80871445493369e-05,-5.83683310018123e-05,0.000107573772806235,0.200005803120542,0.000128178037274826
0.850000000000001,0.559736795995631,-0.292906696389314,0.165126818038953,-6.70139105318767e-05,-4.35391568076593e-05,0.200006002388446,3.79465209254803e-05,-5.76380609906834e-05,0.000107659495901524,0.200006018354272,0.000127877486614665
0.852000000000001,0.559736662043703,-0.292906783582905,0.165526830259049,-6.69381578499716e-05,-4.36537020004346e-05,0.200006217792412,3.78063691464092e-05,-5.69064240174554e-05,0.000107743687235984,0.200006233757821,0.000127578857110786
0.854000000000001,0.559736528242999,-0.292906871004122,0.165926842910122,-6.68626850552911e-05,-4.37667825037291e-05,0.200006433363195,3.76666406398662e-05,-5.6173451307151e-05,0.000107826322523485,0.200006449328056,0.000127282160092404
0.856000000000001,0.559736394592962,-0.292906958650035,0.166326855992502,-6.67874912874122e-05,-4.38783958056632e-05,0.200006649097702,3.75273770392148e-05,-5.54391740847925e-05,0.000107907419111264,0.200006665061877,0.000126987468475835
0.858000000000001,0.559736261093034,-0.292907046517706,0.166726869506513,-6.67125755471342e-05,-4.39885392000682e-05,0.200006864992871,3.73885922222427e-05,-5.47035750031454e-05,0.000107986968325702,0.200006880956221,0.000126694803660853
0.860000000000001,0.55973612774266,-0.292907134604192,0.167126883452474,-6.66379369185232e-05,-4.40972101056758e-05,0.200007081045575,3.72502514944805e-05,-5.396669916502e-05,0.000108064942411223,0.200007097007956,0.000126404183607628
0.862000000000001,0.559735994541287,-0.292907222906546,0.167526897830696,-6.65635745411563e-05,-4.42044059967283e-05,0.200007297252641,3.71123617948221e-05,-5.32285396315224e-05,0.000108141353510893,0.200007313213905,0.000126115649974388
0.864000000000001,0.559735861488362,-0.292907311421816,0.167926912641484,-6.64894874713439e-05,-4.43101242642018e-05,0.200007513610989,3.69749370010552e-05,-5.24891449749098e-05,0.000108216220706669,0.200007529570986,0.00012582927612628
0.866000000000001,0.559735728583337,-0.292907400147043,0.16832692788514,-6.64156747931521e-05,-4.4414362576628e-05,0.200007730117524,3.68379493576043e-05,-5.17485221340763e-05,0.000108289504099912,0.2000077460761,0.000125545054678148
0.868000000000001,0.559735595825663,-0.292907489079266,0.168726943561954,-6.63421356739135e-05,-4.45171183527382e-05,0.200007946769005,3.67014127422571e-05,-5.10066468228931e-05,0.000108361208894792,0.200007962726003,0.000125263016531351
0.870000000000001,0.559735463214794,-0.292907578215517,0.169126959672216,-6.62688691421831e-05,-4.46183891639195e-05,0.200008163562359,3.6565375727271e-05,-5.02635641441706e-05,0.000108431352438543,0.200008179517617,0.000124983241973487
0.872000000000001,0.559735330750186,-0.292907667552823,0.169526976216204,-6.61958741710044e-05,-4.47181726093148e-05,0.200008380494415,3.64297689237069e-05,-4.95192914451436e-05,0.000108499903506143,0.200008396447768,0.000124705723003822
0.874000000000001,0.559735198431297,-0.292907757088207,0.169926993194193,-6.61231500664882e-05,-4.48164663297001e-05,0.200008597561973,3.6294585392671e-05,-4.87738668897286e-05,0.000108566856893422,0.200008613513254,0.000124430500424613
0.876000000000001,0.559735066257586,-0.292907846818688,0.170327010606452,-6.60506958294337e-05,-4.49132680768738e-05,0.200008814761843,3.61598945231023e-05,-4.80272835390316e-05,0.000108632210865656,0.200008830710879,0.000124157622293682
0.878000000000001,0.559734934228514,-0.292907936741279,0.170727028453241,-6.59785104883958e-05,-4.50085754638562e-05,0.200009032090817,3.60256546816373e-05,-4.72795240458179e-05,0.000108695975831186,0.200009048037435,0.000123887111319674
0.880000000000001,0.559734802343544,-0.29290802685299,0.171127046734815,-6.59065932107072e-05,-4.5102386173057e-05,0.200009249545746,3.58918450515943e-05,-4.65306682073674e-05,0.000108758137912224,0.200009265489769,0.00012361901223989
0.882000000000001,0.559734670602141,-0.292908117150824,0.171527065451424,-6.58349431081894e-05,-4.51946981366857e-05,0.200009467123369,3.57585142052308e-05,-4.57807333709148e-05,0.000108818679761535,0.200009483064615,0.000123353362139781
0.884000000000001,0.559734539003772,-0.292908207631782,0.171927084603308,-6.57635591538863e-05,-4.52855091065407e-05,0.200009684820465,3.5625627448077e-05,-4.50296779030967e-05,0.000108877610052738,0.20000970075875,0.000123090175050334
0.886000000000001,0.559734407547904,-0.29290829829286,0.172327104190705,-6.56924405983971e-05,-4.53748168482981e-05,0.200009902633809,3.54931778412393e-05,-4.42775503761705e-05,0.000108934927051107,0.200009918568946,0.000122829497565586
0.888000000000001,0.559734276234009,-0.29290838913105,0.172727124213844,-6.56215864425213e-05,-4.54626193080454e-05,0.200010120560173,3.53612208958686e-05,-4.35243993623935e-05,0.000108990639430262,0.200010136491972,0.00012257140272723
0.890000000000001,0.559734145061559,-0.292908480143338,0.173127144672946,-6.55509957148137e-05,-4.55489144457477e-05,0.200010338596367,3.52296802841323e-05,-4.27702248617656e-05,0.000109044709026285,0.200010354524634,0.000122315865995689
0.892000000000001,0.559734014030026,-0.292908571326708,0.173527165568229,-6.54806677213848e-05,-4.56337002074924e-05,0.200010556739009,3.50985907004997e-05,-4.2015019935393e-05,0.000109097101144706,0.200010572663549,0.000122062895457673
0.894000000000001,0.559733883138888,-0.292908662678139,0.173927186899902,-6.54106013520117e-05,-4.57169745254892e-05,0.200010774984771,3.49679799005464e-05,-4.12588192777452e-05,0.000109147881705018,0.200010790905384,0.000121812601430276
0.896000000000001,0.559733752387621,-0.292908754194606,0.174327208668168,-6.53407958017826e-05,-4.57987354846034e-05,0.200010993330536,3.48377923731213e-05,-4.05016437055039e-05,0.000109197040298881,0.20001100924702,0.000121564997142745
0.898000000000001,0.559733621775705,-0.29290884587308,0.174727230873224,-6.52712501825192e-05,-4.58789811003113e-05,0.200011211772932,3.47080697515878e-05,-3.97435140353508e-05,0.000109244517945695,0.200011227685082,0.000121320079603281
0.900000000000001,0.55973349130262,-0.29290893771053,0.17512725351526,-6.52019635227762e-05,-4.59577095407448e-05,0.200011430308608,3.45787842803702e-05,-3.89844684312024e-05,0.000109290351074653,0.200011446216216,0.000121077916810593
0.902000000000001,0.559733360967851,-0.292909029703919,0.175527276594459,-6.51329350453977e-05,-4.60349189740361e-05,0.200011648934337,3.44499498372563e-05,-3.82244895458239e-05,0.000109334534481586,0.200011664837192,0.000120838533072582
0.904000000000001,0.55973323077088,-0.292909121850206,0.175927300110997,-6.50641637234272e-05,-4.61106074989281e-05,0.200011867646746,3.43215872389279e-05,-3.74636051347909e-05,0.00010937705602343,0.200011883544636,0.000120601962855699
0.906000000000001,0.559733100711196,-0.292909214146349,0.176327324065046,-6.4995648696442e-05,-4.61847733945752e-05,0.200012086442561,3.41936479131277e-05,-3.67018707092548e-05,0.000109417893148778,0.200012102335269,0.000120368219278525
0.908000000000001,0.559732970788285,-0.2929093065893,0.176727348456768,-6.49273891317747e-05,-4.62574149817651e-05,0.200012305318318,3.40661665543251e-05,-3.59392758608745e-05,0.000109457033714566,0.200012321205626,0.000120137327599305
0.910000000000001,0.559732841001639,-0.292909399176009,0.177127373286319,-6.48593840302247e-05,-4.63285304980187e-05,0.200012524270696,3.39391154069446e-05,-3.5175834467438e-05,0.000109494524558329,0.200012540152381,0.000119909356571291
0.912000000000001,0.559732711350749,-0.292909491903422,0.17752739855385,-6.47916326701469e-05,-4.63981183196349e-05,0.200012743296417,3.38124944709861e-05,-3.44115951012025e-05,0.00010953033272032,0.200012759172257,0.000119684319965414
0.914000000000001,0.559732581835108,-0.292909584768482,0.177927424259505,-6.47241340523407e-05,-4.64661768784235e-05,0.200012962392026,3.36863592576009e-05,-3.36465473538272e-05,0.000109564432179687,0.200012978261795,0.000119462235655134
0.916000000000001,0.559732452454213,-0.292909677768129,0.178327450403418,-6.46568872331165e-05,-4.65327045090502e-05,0.200013181554145,3.35606681334255e-05,-3.28807155114408e-05,0.000109596826405878,0.200013197417613,0.000119243130856022
0.918000000000001,0.55973232320756,-0.2929097708993,0.178727476985721,-6.4589891379807e-05,-4.65976997404693e-05,0.200013400779332,3.34353933428843e-05,-3.21141585546414e-05,0.000109627511929444,0.200013416636268,0.000119027039278924
0.920000000000001,0.559732194094647,-0.292909864158928,0.179127504006536,-6.4523145659745e-05,-4.66611611432688e-05,0.200013620064193,3.33105557026591e-05,-3.13468695445351e-05,0.000109656513036516,0.200013635914364,0.000118814015178301
0.922000000000001,0.559732065114977,-0.292909957543944,0.179527531465978,-6.44566491569964e-05,-4.67230872186474e-05,0.200013839405384,3.31861829683255e-05,-3.0578848481122e-05,0.000109683814114581,0.200013855248554,0.000118604080002167
0.924000000000001,0.559731936268051,-0.292910051051277,0.179927559364157,-6.43904009278717e-05,-4.67834765371932e-05,0.20001405879945,3.30622473843078e-05,-2.98101404672124e-05,0.000109709364856658,0.200014074635379,0.000118397218776572
0.926000000000001,0.559731807553373,-0.292910144677851,0.180327587701176,-6.43244001674592e-05,-4.68423277805163e-05,0.200014278242844,3.29387420117122e-05,-2.90407906056167e-05,0.000109733184344707,0.200014294071293,0.000118193485398912
0.928000000000001,0.55973167897045,-0.292910238420588,0.180727616477129,-6.42586459598248e-05,-4.68996396996157e-05,0.200014497732187,3.28156737894325e-05,-2.82708023657818e-05,0.000109755295130132,0.200014513552914,0.000117992929965154
0.930000000000001,0.559731550518789,-0.292910332276409,0.181127645692105,-6.41931374723014e-05,-4.69554109899794e-05,0.200014717264024,3.2693021900787e-05,-2.75001757477078e-05,0.00010977567119208,0.200014733076784,0.000117795548866805
0.932000000000001,0.5597314221979,-0.292910426242232,0.181527675346185,-6.41278738722217e-05,-4.70096404026065e-05,0.200014936834872,3.25708487958209e-05,-2.6728952384758e-05,0.000109794295183319,0.200014952639417,0.000117601378995608
0.934000000000001,0.559731294007294,-0.292910520314971,0.181927705439444,-6.40628540771181e-05,-4.70623267995185e-05,0.200015156441205,3.24491336578525e-05,-2.59571600325081e-05,0.000109811165369122,0.200015172237287,0.000117410444475026
0.936000000000001,0.559731165946484,-0.292910614491539,0.18232773597195,-6.39980773375903e-05,-4.71134690427366e-05,0.200015376079533,3.23277793423671e-05,-2.51848125687459e-05,0.000109826304300897,0.200015391866901,0.000117222767488764
0.938000000000001,0.559731038014984,-0.292910708768847,0.182727766943762,-6.39335429597487e-05,-4.71630660497934e-05,0.200015595746422,3.22068621771976e-05,-2.44119308101531e-05,0.000109839668610556,0.200015611524823,0.00011703835754853
0.940000000000001,0.559730910212312,-0.292910803143803,0.183127798354935,-6.38692498888815e-05,-4.72111167659772e-05,0.200015815438208,3.20864307346014e-05,-2.36385355734114e-05,0.000109851260032823,0.200015831207387,0.000116857257935229
0.942000000000001,0.559730782537985,-0.292910897613314,0.183527830205515,-6.38051972368103e-05,-4.72576201920871e-05,0.200016035151462,3.19664086867455e-05,-2.28646719613312e-05,0.000109861101119102,0.200016050911163,0.000116679501401612
0.944000000000001,0.559730654991523,-0.292910992174284,0.183927862495541,-6.37413842541345e-05,-4.73025754538225e-05,0.200016254882612,3.18468168503116e-05,-2.20903365044655e-05,0.000109869155440201,0.200016270632576,0.000116505081552355
0.946000000000001,0.559730527572448,-0.292911086823616,0.184327895225045,-6.3677809969409e-05,-4.73459815381049e-05,0.200016474628084,3.17276621641937e-05,-2.13155465500492e-05,0.000109875436873907,0.20001649036805,0.000116334039297896
0.948000000000001,0.559730400280283,-0.29291118155821,0.184727928394053,-6.36144736054777e-05,-4.73878376400227e-05,0.20001669438436,3.16088960561345e-05,-2.05403714870211e-05,0.000109879935011881,0.200016710114067,0.000116166386226513
0.950000000000001,0.559730273114553,-0.292911276374967,0.185127962002583,-6.35513743851845e-05,-4.7428143024053e-05,0.200016914147824,3.14905948539667e-05,-1.97647974375936e-05,0.000109882634241609,0.200016929867009,0.000116002146919275
0.952000000000001,0.559730146074786,-0.292911371270782,0.185527996050645,-6.34885112260619e-05,-4.74668968297731e-05,0.200017133914897,3.1372730802115e-05,-1.89888521573422e-05,0.000109883543236711,0.200017149623294,0.00011584134762031
0.954000000000001,0.559730019160509,-0.292911466242554,0.185928030538242,-6.3425883461976e-05,-4.75040984326824e-05,0.200017353681997,3.12552345116401e-05,-1.82125738101835e-05,0.00010988263944578,0.200017369379339,0.000115683974606426
0.956000000000001,0.559729892371252,-0.292911561287176,0.186328065465373,-6.33634902880153e-05,-4.75397471250138e-05,0.200017573445454,3.11382031270568e-05,-1.74359658655643e-05,0.000109879917664646,0.200017589131474,0.000115530069270456
0.958000000000001,0.559729765706547,-0.292911656401542,0.186728100832024,-6.33013306494678e-05,-4.75738422961447e-05,0.200017793201668,3.10216158316834e-05,-1.66590699568481e-05,0.00010987538830165,0.200017808876095,0.000115379661184604
0.960000000000001,0.559729639165929,-0.292911751582545,0.187128136638179,-6.32394038246886e-05,-4.76063834048412e-05,0.200018012947008,3.09054101754746e-05,-1.58819034312696e-05,0.000109869034009558,0.200018028609571,0.000115232737834818
0.962000000000001,0.559729512748932,-0.292911846827076,0.187528172883812,-6.31777090087659e-05,-4.76373699098697e-05,0.200018232677804,3.07896139140062e-05,-1.51045009832984e-05,0.000109860853053645,0.200018248328231,0.000115089327518248
0.964000000000001,0.559729386455093,-0.292911942132025,0.187928209568891,-6.31162453690325e-05,-4.76668014087744e-05,0.20001845239042,3.06742339861721e-05,-1.43268764907223e-05,0.000109850850638082,0.200018468028437,0.000114949455877482
0.966000000000001,0.559729260283951,-0.292912037494282,0.188328246693374,-6.30550120728212e-05,-4.76946774158326e-05,0.200018672081206,3.05592981475477e-05,-1.35490403618821e-05,0.000109839018089253,0.200018687706539,0.000114813139896136
0.968000000000001,0.559729134235045,-0.292912132910735,0.188728284257215,-6.29940081764424e-05,-4.77209975702219e-05,0.200018891746492,3.04447855814516e-05,-1.27710411690351e-05,0.000109825318977963,0.200018907358864,0.000114680360787072
0.970000000000001,0.559729008307918,-0.292912228378272,0.18912832226036,-6.29332329304954e-05,-4.77457615805088e-05,0.200019111382482,3.03306685323079e-05,-1.1992910137204e-05,0.000109809753304213,0.200019126981615,0.000114551129492065
0.972000000000001,0.559728882502113,-0.292912323893781,0.189528360702745,-6.28726855023131e-05,-4.77689692107707e-05,0.200019330985505,3.02169747556924e-05,-1.12146576747296e-05,0.000109792355762472,0.200019346571121,0.000114425501939126
0.974000000000001,0.559728756817176,-0.292912419454149,0.189928399584302,-6.28123650314726e-05,-4.77906202112077e-05,0.200019550551905,3.01036764960294e-05,-1.04362941899527e-05,0.000109773100331889,0.200019566123724,0.000114303460715202
0.976000000000001,0.559728631252653,-0.292912515056262,0.190328438904953,-6.2752270796329e-05,-4.78107143875306e-05,0.200019770077907,2.9990766814425e-05,-9.65787172457765e-06,0.000109751971399952,0.200019785635648,0.000114185006925346
0.978000000000001,0.559728505808093,-0.292912610697006,0.190728478664614,-6.26924019642149e-05,-4.7829251698106e-05,0.200019989559791,2.98783012220305e-05,-8.87941109528611e-06,0.000109728965497213,0.200020005103173,0.000114070165663078
0.980000000000001,0.559728380483045,-0.292912706373269,0.191128518863192,-6.26327575914409e-05,-4.78462320319117e-05,0.200020208993769,2.97662450243763e-05,-8.10092271041895e-06,0.000109704068745886,0.20002022452251,0.000113958926771945
0.982000000000001,0.559728255277062,-0.292912802081934,0.191528559500589,-6.25733369841174e-05,-4.78616553889477e-05,0.200020428376066,2.96545635269929e-05,-7.32246555057436e-06,0.000109677295023758,0.200020443889882,0.000113851309537678
0.984000000000001,0.559728130189697,-0.29291289781989,0.191928600576696,-6.25141393373329e-05,-4.7875521894114e-05,0.200020647702949,2.95432914243498e-05,-6.54403614630538e-06,0.000109648623514147,0.200020663201556,0.000113747312565244
0.986000000000001,0.559728005220505,-0.292912993584022,0.1923286420914,-6.245516381842e-05,-4.78878315335329e-05,0.20002086697056,2.94324425942349e-05,-5.76563796705897e-06,0.00010961805248233,0.200020882453674,0.000113646947553592
0.988000000000001,0.559727880369042,-0.292913089371216,0.192728684044579,-6.2396409566956e-05,-4.78985844459822e-05,0.200021086175159,2.93219892810725e-05,-4.98735427956198e-06,0.000109585604479712,0.200021101642493,0.000113550242039782
0.990000000000001,0.559727755634867,-0.29291318517836,0.193128726436101,-6.23378758612957e-05,-4.79077809506511e-05,0.200021305312978,2.92119106681809e-05,-4.20919896160221e-06,0.000109551241342376,0.200021320764247,0.000113457161785582
0.992000000000001,0.559727631017539,-0.29291328100234,0.193528769265831,-6.22795619242832e-05,-4.79154212418286e-05,0.200021524380124,2.91022483889236e-05,-3.4311546659449e-06,0.000109514923171683,0.200021539815041,0.00011336768534698
0.994000000000001,0.559727506516619,-0.292913376840045,0.193928812533622,-6.22214668677401e-05,-4.79215055693149e-05,0.20002174337267,2.89929885655127e-05,-2.65327690374128e-06,0.000109476691600996,0.200021758790948,0.00011328185763037
0.996000000000001,0.559727382131671,-0.292913472688362,0.194328856239321,-6.21635899700212e-05,-4.79260343494436e-05,0.200021962286891,2.88841034419423e-05,-1.87560383923987e-06,0.000109436572304222,0.20002197768824,0.000113199702645828
0.998000000000001,0.559727257862259,-0.292913568544182,0.194728900382769,-6.21059304539723e-05,-4.79290079846719e-05,0.20002218111896,2.87756138357555e-05,-1.09815975790528e-06,0.000109394486177975,0.200022196503094,0.000113121154134059
1,0.559727133707949,-0.292913664404394,0.195128944963797,-6.20484875146782e-05,-4.79304269884752e-05,0.200022399864835,6.47104314581583e-05,1.17001859593062e-05,-0.0248962396563058,0.200022415231465,0.0248963265032917
1.002,0.559727009668309,-0.29291376026589,0.195528989982229,-6.18470887281397e-05,-4.78822072408347e-05,0.199922596160334,0.000208561473647326,6.05797356726379e-05,-0.124918854036565,0.199922611460676,0.124919042830152
1.004,0.559726886319594,-0.292913855933223,0.195928635348438,-6.12142416200889e-05,-4.76881080457847e-05,0.199522724448689,0.000459439777888981,0.00014546347806843,-0.299958929307967,0.199522739538045,0.299959316434937
1.006,0.559726764811343,-0.292913951018322,0.196327080880023,-6.00093296165837e-05,-4.73003533285609e-05,0.198722760443103,0.000743686244530916,0.000241945054268999,-0.500005546889836,0.198722775133022,0.500006158489317
1.008,0.559726646282276,-0.292914045134637,0.196723526390211,-5.82394966419652e-05,-4.67203278287087e-05,0.19752270226113,0.00102349224928577,0.000337419873291944,-0.700052949590204,0.197522716372489,0.700053779090221
1.01,0.559726531853356,-0.292914137899634,0.197117171689068,-5.59153606194406e-05,-4.59506738353932e-05,0.195922548644742,0.00129711919677477,0.00043125516352438,-0.900100815097448,0.195922562012248,0.900101853035709
1.012,0.559726422620833,-0.292914228937332,0.19750721658479,-5.30510198548661e-05,-4.49953071746112e-05,0.19392229900074,0.00156282526503348,0.000522810704450815,-1.10014880104481,0.193922311477356,1.10015003531072
1.014,0.559726319649277,-0.292914317880862,0.197892860885071,-4.96640595593067e-05,-4.38594310175899e-05,0.191521953440562,0.00181886569694533,0.000611439794628854,-1.30019654553948,0.191521964901829,1.30019796152887
1.016,0.559726223964595,-0.292914404375056,0.198273304398552,-4.57755570670848e-05,-4.25495479960957e-05,0.188721512818582,0.00206349316800302,0.000696490178031526,-1.5002436680768,0.188721523166807,1.50024524885338
1.018,0.559726136547048,-0.292914488079054,0.198647746936345,-4.14100868872946e-05,-4.10734703054638e-05,0.185520978768255,0.002294958015292,0.000777305032839679,-1.70028977063662,0.185520987936559,1.70029149711657
1.02,0.559726058324248,-0.292914568668937,0.199015388313625,-3.65957250059168e-05,-3.9440327864737e-05,0.181920353736035,0.00251150856361848,0.000853224046970524,-1.90033443890278,0.181920361692227,1.90033629006723
1.022,0.559725990164148,-0.292914645840366,0.199375428351289,-3.13640526328207e-05,-3.76605741175817e-05,0.177919641012644,0.0027113915071486,0.000923584472789506,-2.1003772436648,0.177919647762946,2.10037919680164
1.024,0.559725932868037,-0.292914719311234,0.199727066877676,-2.57501589773223e-05,-3.5745989973579e-05,0.173518844761376,0.00289285265187011,0.000987722077738781,-2.30041774234613,0.173518850353986,2.30041977332231
1.026,0.559725887163512,-0.292914788824326,0.200069503730335,-1.97926420253402e-05,-3.37096858066266e-05,0.16871797004326,0.00305413732498704,0.0010449723482353,-2.50045548068518,0.168717974571798,2.5004575642491
1.028,0.559725853697469,-0.292914854149977,0.200401938757849,-1.35336096773741e-05,-3.15661005806378e-05,0.163517022838636,0.00319349088839793,0.0010946715374438,-2.70048999475615,0.16351702644553,2.7004921048705
1.03,0.559725833029074,-0.292914915088728,0.200723571821689,-7.01867847174852e-06,-2.93309996568513e-05,0.157916010064235,0.00330915968238531,0.00113615756733298,-2.90052081296579,0.15791601294415,2.90052292317085
1.032,0.559725825622755,-0.292914971473976,0.201033602798106,-2.96970947832875e-07,-2.70214703113058e-05,0.151914939586772,0.00339939158766622,0.00116877119787917,-3.10054745819577,0.151914941990249,3.10054954200276
1.034,0.55972583184119,-0.292915023174609,0.201331231580036,6.57888787891636e-06,-2.46559148653347e-05,0.145513820231452,0.00346243698989834,0.00119185697075585,-3.30056945031797,0.145513822469026,3.30057148163242
1.036,0.559725851938307,-0.292915070097635,0.201615658079031,1.35527770117605e-05,-2.22540424282824e-05,0.1387126617855,0.00349654961928624,0.00120476418424831,-3.50058630869085,0.138712664232718,3.50058826226534
1.038,0.559725886052298,-0.292915112190779,0.201886082227178,2.05650863560613e-05,-1.98368581283414e-05,0.131511474996689,0.00349998735549306,0.00120684794102654,-3.70059755486033,0.13151147810069,3.70059940677611
1.04,0.559725934198652,-0.292915149445068,0.202141703979018,2.75527264337327e-05,-1.74266506641762e-05,0.123910271566059,0.00347101347664135,0.0011974700987738,-3.90060271541342,0.123910275854811,3.90060444359073
1.042,0.559725996263204,-0.292915181897382,0.202381723313443,3.44491402626268e-05,-1.50469777332462e-05,0.115909064135035,0.00340789761688053,0.00117600024163167,-4.10060132499494,0.115909070230998,4.10060290973083
1.044,0.559726071995213,-0.292915209632978,0.202605340235558,4.11843169012549e-05,-1.27226496976496e-05,0.107507866266079,0.00329489877742839,0.00113709665294781,-4.2801538298609,0.107507874907371,4.28015524912587
1.046,0.559726161000471,-0.29291523278798,0.202811754778507,4.76287353723403e-05,-1.0498591121455e-05,0.0987884488155912,0.00307491947182381,0.00106157932097672,-4.34575395964232,0.0987884608550388,4.34575517716166
1.048,0.559726262510155,-0.292915251627343,0.203000494030821,5.34839947885501e-05,-8.47633241374268e-06,0.09012485042751,0.0027336183941462,0.00094485897925156,-4.23827163429507,0.0901248666959733,4.2382726211864
1.05,0.55972637493645,-0.29291526669331,0.203172254180217,5.85632089489251e-05,-6.71915520444876e-06,0.0818353622784109,0.00235898493794462,0.000816859906105359,-4.04471370012322,0.0818353835088176,4.04471447052008
1.052,0.55972649676299,-0.292915278503964,0.203327835479934,6.29199345403286e-05,-5.20889278932124e-06,0.0739459956270171,0.00201515260034313,0.000699331623860154,-3.84465549212696,0.073946022579457,3.84465608384504
1.054,0.559726626616189,-0.292915287528881,0.203468038162725,6.66238193502977e-05,-3.92182870900814e-06,0.0664567403099031,0.00170527032078426,0.00059338974012224,-3.6446023173979,0.0664567738212738,3.64460276464259
1.056,0.559726763258268,-0.292915294191279,0.203593662441174,6.97410158234656e-05,-2.83533382883227e-06,0.0593675863574255,0.00142758697224687,0.00049848331365454,-3.4445540629778,0.0593676273886264,3.44455439487709
1.058,0.559726905580252,-0.292915298870217,0.203705508508155,7.23341672392851e-05,-1.92789545438998e-06,0.0526785240579918,0.00118034510637743,0.000414047972990827,-3.24451058548481,0.0526785737551517,3.2445108266075
1.06,0.559727052594937,-0.29291530190286,0.203804376537406,7.44623962489754e-05,-1.17914193686896e-06,0.0463895440154862,0.000961782119224263,0.000339507880142697,-3.04447171429848,0.0463896037922676,3.04447188514757
1.062,0.559727203429837,-0.292915303586784,0.203891066684217,7.61812957161822e-05,-5.69863933819192e-07,0.0405006372007979,0.000770131187988187,0.000274277423689683,-2.84443725456946,0.0405007088528734,2.84443737204967
1.064,0.55972735732012,-0.292915304182316,0.203966379086209,7.75429210009281e-05,-8.20322421102303e-08,0.0350117949972084,0.000398973742932185,0.00021421258517007,-2.64440716362356,0.0350118808668982,2.64440720239729
1.066,0.559727513601521,-0.292915303914913,0.204031113864205,7.77771906879109e-05,2.86986406861089e-07,0.0299230085463037,-0.00115535531142186,0.000141854781393613,-2.44438170280032,0.0299231096284446,2.4443819799601
1.068,0.559727668428882,-0.292915303034371,0.204086071120394,7.29214997552407e-05,4.85386883464222e-07,0.0252342681860071,-0.00401650483705662,5.56669155216126e-05,-2.24435995451258,0.0252343735540246,2.24436354916703
1.07,0.55972780528752,-0.292915301973366,0.20413205093695,6.17111713396845e-05,5.0965406894754e-07,0.0209455687282534,-0.00626615419968556,-1.15940174127971e-05,-2.04434003984142,0.0209456596429523,2.04434964311923
1.072,0.559727915273568,-0.292915300995754,0.204169853395307,4.78568829564984e-05,4.39010813813034e-07,0.0170569080266414,-0.00686163004193217,-4.41210054602514e-05,-1.84432192848992,0.0170569751686306,1.84433469300511
1.074,0.559727996715052,-0.292915300217322,0.204200278569056,3.42646511719557e-05,3.33170047106534e-07,0.0135682810142937,-0.00631623352231879,-5.29287308426162e-05,-1.64430670730048,0.0135683242834244,1.64431883930115
1.076,0.559728052332172,-0.292915299663074,0.204224126519365,2.25919488672232e-05,2.27295890442569e-07,0.0104796811974395,-0.00517427409252313,-4.84691488333854e-05,-1.44429475571785,0.0104797055515784,1.44430402507772
1.078,0.559728087082847,-0.292915299308139,0.204242197293846,1.35675548018632e-05,1.39293451772993e-07,0.00779110199142229,-0.00383122115282796,-3.79535396166641e-05,-1.24428593613682,0.00779111380604149,1.24429183496633
1.08,0.559728106602392,-0.2929152991059,0.20425529092733,7.26706425591139e-06,7.54817319759126e-08,0.00550253745289219,-0.00255506633906055,-2.60802768270451e-05,-1.04427983641311,0.00550254225212326,1.04428296250737
1.082,0.559728116151104,-0.292915299006212,0.204264207443657,3.34728944562101e-06,3.4972344464812e-08,0.00361398264576984,-0.00150598635645371,-1.56192385414311e-05,-0.844275922229352,0.00361398419607713,0.844277265532532
1.084,0.559728119991549,-0.292915298966011,0.204269746857913,1.24311883009653e-06,1.30047778101883e-08,0.00212543376397478,-0.000754516962797601,-7.88577883548135e-06,-0.644273639664044,0.00212543412755078,0.644274081524305
1.086,0.55972812112358,-0.292915298954193,0.204272709178713,3.29221594430606e-07,3.42922912288656e-09,0.00103688808711366,-0.000298867597336993,-3.12933359780664e-06,-0.444272481940274,0.00103688813938479,0.44427258247725
1.088,0.559728121308436,-0.292915298952294,0.204273894410262,4.764844074856e-08,4.87443418961675e-10,0.000348343836213682,-8.15881945337436e-05,-8.50951253905661e-07,-0.233204047222351,0.000348343839472835,0.233204061496026
1.09,0.559728121314173,-0.292915298952243,0.204274102554058,2.8688162956314e-09,2.54241072639161e-11,0.000104071898224256,-2.23898122264643e-05,-2.31009655848879e-07,-0.122135968994713,0.0001040718982638,0.122135971047168

1 t px py pz vx vy vz ax ay az speed acc
2 0 0.559809314390095 -0.292914056655931 0.00429163619695835 0 0 0 0.0499999733977186 -2.63539190470397e-08 5.51156342787351e-08 1.86795023893183e-08 4.43482056633471e-08 0.0499999791552658 0 0.0499999733977686 0.0499999791552762
3 0.002 0.559809314390095 -0.292914056655931 0.00429163619695835 9.99999467954371e-05 -5.27078380940793e-11 1.1023126855747e-10 3.73590047786365e-11 8.86964113266941e-11 9.99999583105315e-05 0.124999924931701 -2.55427623496729e-07 4.50216253167213e-07 1.76723219391661e-07 3.45509211518991e-07 0.124999884896886 9.99999467955372e-05 9.99999583105524e-05 0.12499992493299 0.124999884897271
4 0.004 0.559809714389882 0.559809314389884 -0.29291405665549 -0.292914056655782 0.00429163619731314 0.0042920361967916 0.000499999699726805 -1.02171049398692e-09 1.80086501266885e-09 7.06892877566645e-10 1.38203684607596e-09 0.000499999539587542 0.299999780524474 -1.48488860096663e-06 2.51783663363092e-06 1.02245295563463e-06 1.90865379057215e-06 0.299999433996979 0.000499999699731958 0.000499999539589086 0.299999780541111 0.299999434002397
5 0.006 0.559811314388894 0.559809314386008 -0.292914056648728 -0.292914056653104 0.0042916362024865 0.0042936361951167 0.00129999906889333 -5.99226224196059e-09 1.01815778030812e-08 4.12717082731717e-09 7.72331157361528e-09 0.00129999769429845 0.49999952015517 -5.00186697616201e-06 8.36266125792129e-06 3.43832948224154e-06 6.30987709998587e-06 0.499998216783697 0.00129999906895614 0.00129999769431881 0.499999520264919 0.499998216820538
6 0.008 0.559814914386157 0.559809314365915 -0.292914056614764 -0.292914056639273 0.00429163622820639 0.00429723618756879 0.00249999778034748 -2.10291783986349e-08 3.5251510044354e-08 1.44602108065328e-08 2.66215452460195e-08 0.00249999240672233 0.699999088221714 -1.23088275683081e-05 2.04570457795761e-05 8.45479589117737e-06 1.54041571165386e-05 0.699995739690193 0.00249999778073776 0.00249999240685259 0.699999088690129 0.699995739849473
7 0.01 0.559821314380015 0.559809314301891 -0.292914056507722 -0.292914056595263 0.00429163630897268 0.00430363616474359 0.00409999542178019 -5.52275725151929e-08 9.20097609213855e-08 3.79463543920266e-08 6.93399400397698e-08 0.00409998065305922 0.899998415099246 -2.49193027324068e-05 4.13012367361798e-05 1.71093902934238e-05 3.10682677501228e-05 0.899991498596285 0.00409999542339895 0.00409998065360679 0.899998416583154 0.899991499103903
8 0.012 0.559831314367845 0.559809314145005 -0.292914056246725 -0.292914056487488 0.00429163650556615 0.00431363611018103 0.00609999144074447 -1.20706389328262e-07 2.00456456989073e-07 8.28977719802282e-08 1.50894616246511e-07 0.00609995840110747 1.09999742960165 -4.4341134930459e-05 7.33957374043914e-05 3.04341309098621e-05 5.51777738083681e-05 1.0999849891823 0.00609999144590447 0.00609995840286503 1.09999743343417 1.09998499049703
9 0.014 0.559845714345778 0.559809313819066 -0.292914055705896 -0.292914056263672 0.00429163691255115 0.00432803599834802 0.00849998514018679 -2.32592112237029e-07 3.85592710538951e-07 1.59682878031475e-07 2.90051035273242e-07 0.00849992060978841 1.2999960579893 -7.20702525436323e-05 0.000119240478602123 4.94503847592309e-05 8.96055313281962e-05 1.29997570688222 0.0084999851538816 0.00849992061447067 1.29999606654604 1.29997570982053
10 0.016 0.559865314308405 0.559809313214636 -0.292914054704354 -0.292914055848756 0.00429163766577029 0.00434763579262018 0.0112999756727017 -4.08987399502791e-07 6.77418371397564e-07 2.80699311017152e-07 5.09316741559296e-07 0.0112998612286363 1.49999422298374 -0.00010958457058452 0.000181333153354002 7.51633512374726e-05 0.000136219124521886 1.49996314679785 0.0112999757044849 0.0112998612395242 1.4999942401296 1.4999631526841
11 0.018 0.559890914248469 0.559809312183116 -0.292914052996222 -0.292914055140874 0.00429163894981811 0.00437323544326257 0.0144999620321218 -6.70930394575108e-07 1.11092532395496e-06 4.60336282981366e-07 8.34927533360785e-07 0.0144997731969798 1.69999184224112 -0.000158344372336305 0.00026216611173635 0.000108560615358355 0.000196876992139549 1.69994680364674 0.0144999620987171 0.0144997732198097 1.69999187385645 1.69994681448777
12 0.02 0.559923314156534 0.559809310530915 -0.292914050260653 -0.292914054007411 0.00429164100548042 0.0044056348854081 0.0180999430416662 -1.04236488884801e-06 1.72608281834297e-06 7.14941772450572e-07 1.29682471011749e-06 0.0180996484432233 1.8999888267146 -0.000219812813784248 0.000364221840187806 0.000150624648170838 0.000273423240645942 1.89992617181771 0.0180999431704267 0.0180996484873586 1.89998888129856 1.89992619050408
13 0.022 0.559963314020635 0.559809308013656 -0.292914046091891 -0.292914052281107 0.00429164413711695 0.00444563403703546 0.0220999173389802 -1.5501816497121e-06 2.56781268470618e-06 1.06283487566472e-06 1.92862049594455e-06 0.0220994778842506 2.09998507891967 -0.000295522363524813 0.000489967604683227 0.000202376244234914 0.000367681445186118 2.09990074540641 0.0220999175723123 0.0220994779641774 2.09998516826742 2.099900775953
14 0.024 0.56001171382589 0.559809304330188 -0.292914039989402 -0.292914049756072 0.0042916487199624 0.0044940327969451 0.0264998833573449 -2.22445434294727e-06 3.68595323707588e-06 1.52444674939023e-06 2.76755049086197e-06 0.0264992514248489 2.29998049072754 -0.000387126351808486 0.000641850097377049 0.000264907408509262 0.000481448277078743 2.29987001800109 0.0264998837582067 0.0264992515620629 2.29998063067742 2.29987006583918
15 0.026 0.560069313554065 0.559809299115839 -0.292914031348078 -0.29291404618332 0.00429165520731892 0.00455163104273486 0.0312998393018904 -3.09868705694605e-06 5.13521307421438e-06 2.12246450970177e-06 3.85441360425953e-06 0.031298957956255 2.49997494087411 -0.000496138317929162 0.000822292078178631 0.000339199945909029 0.000616488269288006 2.49983348153334 0.0312998399604707 0.0312989581816094 2.49997515212063 2.49983355378012
16 0.028 0.560136913183097 0.55980929193544 -0.29291401944855 -0.292914041266214 0.00429166413761682 0.00461922862877012 0.0364997831208413 -4.20900761466391e-06 6.9751215497904e-06 2.88124653302635e-06 5.23350356801399e-06 0.0364985853509823 2.69996829273255 -0.000623858811832355 0.00103369430376476 0.000426072475911975 0.000774532239559976 2.69979062634834 0.0364997841625171 0.0364985857073979 2.69996860170359 2.69979073204868
17 0.03 0.560215312686548 0.559809282279809 -0.292914003447592 -0.292914034658334 0.00429167614133319 0.00469762538413879 0.0420997124728206 -5.59412230427547e-06 9.26999028927344e-06 3.82675441334967e-06 6.95254256249944e-06 0.0420981204616484 2.89996039135043 -0.000771733545124052 0.0012784471016547 0.000526422933022629 0.000957282728780704 2.89974094256316 0.0420997140674938 0.0420981210072577 2.89996083115247 2.89974109304104
18 0.032 0.560305312032989 0.55980926955895 -0.292913982368589 -0.292914025959196 0.00429169194778707 0.00478762111061672 0.048099624686243 -7.29594179516013e-06 1.20889099564092e-05 4.98693826511686e-06 9.06263448313681e-06 0.048097549121235 3.09995106013982 -0.00094130906541645 0.00155895799394678 0.000641194729256166 0.00116643122678034 3.09968391953071 0.0480996270591626 0.04809754993313 3.09995167158681 3.09968412877678
19 0.034 0.560407711185293 0.559809253096041 -0.292913955091952 -0.292914014710581 0.00429171239187112 0.00489001558062373 0.0544995167133799 -9.35935856594127e-06 1.55058222650606e-05 6.39153333037434e-06 1.16182674696208e-05 0.0544968561397712 3.29994009783812 -0.00113406957436002 0.00187770390208674 0.000771261061960348 0.00140369367344906 3.2996190451268 0.0544995201575815 0.0544968573182731 3.29994093059978 3.29961933015324
20 0.036 0.560523310099842 0.559809232121516 -0.2929139203453 -0.292914000393063 0.00429173842085695 0.0050056085351758 0.0612993850775955 -1.18322200926002e-05 1.95997255647562e-05 8.07198251295826e-06 1.4677409176933e-05 0.0612960253017422 3.49992727462916 -0.00135149165469972 0.00223731853876696 0.000917458508470358 0.00167087221576017 3.4995458059097 0.0612993899681467 0.0612960269752465 3.49992838856759 3.49954618713913
21 0.038 0.560652908725604 0.559809205767161 -0.29291387669305 -0.292913982422651 0.00429177110150783 0.0051351996818307 0.0684992258118965 -1.47653251847401e-05 2.44550964201284e-05 1.00613673642558e-05 1.83017563326615e-05 0.0684950393634101 3.69991232788274 -0.00159505035568497 0.00264072870168052 0.00108058697059765 0.00196995390139287 3.69946368715748 0.0684992326222361 0.0684950416938411 3.69991379469646 3.69946418883203
22 0.04 0.56079730700309 0.559809173060215 -0.292913822524914 -0.292913960147593 0.00429181162788228 0.00527958869262944 0.0760990343891265 -1.82124215153401e-05 3.01626403714783e-05 1.23943303953489e-05 2.25572247825045e-05 0.0760938800503721 3.89989495749864 -0.00186621951225873 0.00309135651105352 0.00126140530312679 0.0023032591398367 3.89937217291219 0.0760990437099621 0.0760938832392732 3.89989686286844 3.89937282351926
23 0.042 0.56095730486316 0.559809132917475 -0.292913756042488 -0.29291393284533 0.00429186133040696 0.00543957520203218 0.0840988056418911 -2.22302032337751e-05 3.68205224643425e-05 1.51069885767629e-05 2.75147928920083e-05 0.0840925280550588 4.09987482032081 -0.00216647180056872 0.00359332217453322 0.00146062667516489 0.00267359079580281 4.09927074607359 0.0840988182033926 0.0840925323503454 4.09987726674257 4.09927157878629
24 0.044 0.561133702225657 0.559809084139403 -0.292913675242824 -0.292913899719639 0.00429192168705385 0.00561595880484968 0.0924985336704097 -2.6878308717615e-05 4.45359290696112e-05 1.82368370960084e-05 3.32515879657158e-05 0.0924909630346664 4.29985152399642 -0.00248362769933452 0.00414943474719153 0.00166967401363238 0.00308271395389747 4.27872692292541 0.0924985503686031 0.0924909687380651 4.29985463118794 4.27872796952373
25 0.046 0.561327298997842 0.55980902540424 -0.292913577898772 -0.292913859897981 0.00429199433675882 0.00580953905417085 0.101298211737877 -3.21647140311132e-05 5.34182614531086e-05 2.17856846312925e-05 3.98456487075982e-05 0.10120743574676 4.49982462345094 -0.00274913172781943 0.00476023793993806 0.00184189907423415 0.00353062841896428 4.34426804258366 0.101298233659221 0.101207443202659 4.4998285264016 4.34426930290136
26 0.048 0.561538895072609 0.559808955480546 -0.292913461569778 -0.2929138125769 0.00429208106964868 0.00602078854783672 0.110497832164214 -3.78748356288927e-05 6.35768808293635e-05 2.5604433392945e-05 4.73741016415729e-05 0.109868035205001 4.69979361739091 -0.00290092068422342 0.00542759788502155 0.00193541701762334 0.0040182681800005 4.23678787821439 0.110497860609679 0.109868044716822 4.6997984692289 4.23678931340281
27 0.05 0.561769290326499 0.559808873904898 -0.292913323591249 -0.292913757480248 0.00429218383316539 0.00624901119499086 0.12009738620744 -4.37683967680069e-05 7.51286529931949e-05 2.95273527017858e-05 5.59187214276002e-05 0.118154587259618 4.89975793999813 -0.0029728832104392 0.00615535560369306 0.00197356798958825 0.00454798990395105 4.04326623543778 0.120097422724541 0.118154599055762 4.89976391708718 4.04326781003144
28 0.052 0.562019284617439 0.559808780406959 -0.292913161055166 -0.292913694467489 0.00429230474453439 0.00649340689687519 0.130096863924206 -4.97663684706495e-05 8.81983032441357e-05 3.3498705351298e-05 6.55660612573771e-05 0.126041100146752 5.0997169524225 -0.00301010266018364 0.00694700196673946 0.00198718631133632 0.00512181379860171 3.84325163507032 0.130096910342877 0.126041114423264 5.09972425613762 3.84325332759865
29 0.054 0.562289677782195 0.559808674839424 -0.292912970798036 -0.292913623485426 0.00429244609741042 0.00675317559557786 0.140496254017131 -5.58088074087415e-05 0.000102916660860153 3.74760979471311e-05 7.6405976622007e-05 0.133527593799899 5.29966993568358 -0.00301813474212764 0.00780562950733475 0.00198024868724999 0.00574138026530889 3.64324675648873 0.140496312487404 0.133527610721797 5.29967879389759 3.64324854480007
30 0.056 0.562581269633507 0.55980855717173 -0.292912749388523 -0.292913544563098 0.00429261036844088 0.00702751727207479 0.15129554366694 -6.183890743916e-05 0.000119420821273475 4.1419700100298e-05 8.85315823186127e-05 0.140614087172707 5.49961608288517 -0.00299854609198124 0.00873441521193062 0.00195404343747429 0.00640830756949011 3.44325110939336 0.151295616700051 0.140614106870739 5.49962675238459 3.44325296949019
31 0.058 0.562894859956863 0.559808427483794 -0.292912493114751 -0.292913457806626 0.00429280022373969 0.00731563194426869 0.162494718348671 -6.78029917766664e-05 0.000137854321707875 4.52922716970283e-05 0.000102039206899967 0.147300598237473 5.69955449053471 -0.00295289934171272 0.00973662749731428 0.00190987015785682 0.00712419062631752 3.2432642025357 0.162494808861784 0.147300620805728 5.69956725958923 3.24326610913568
32 0.06 0.563231248506902 0.559808285959763 -0.292912197971236 -0.292913363394011 0.00429301852526848 0.00761671966502468 0.174093761629079 -7.36505048060109e-05 0.000158367331262732 4.90591807317253e-05 0.000117028344823883 0.15358714398285 5.89948414886353 -0.00288275330689868 0.0108156336560416 0.00184903496680544 0.00789059960946968 3.04328554332714 0.174093872993876 0.153587169477169 5.89949933995976 3.04328747038806
33 0.062 0.563591235003379 0.559808132881775 -0.292911859645426 -0.292913261569903 0.00429326833711899 0.00792998052020009 0.186092654944125 -7.93340050042612e-05 0.000181116856332042 5.268841156425e-05 0.000133601605337846 0.159473740410781 6.09940393155733 -0.00278966325734097 0.0119749074718733 0.0017728460054156 0.00870907857723062 2.84331463755536 0.186092791039465 0.159473768847915 6.09942190430828 2.84331655876383
34 0.064 0.563975619126678 0.559807968623743 -0.292911473503811 -0.292913152640365 0.00429355293168983 0.00825461462666781 0.198491377355309 -8.48091578353748e-05 0.000206266961150225 5.61505647533877e-05 0.000151864659132805 0.164960402533071 6.29931258462611 -0.00267518104890562 0.0132180370121526 0.00168260933658404 0.00958114429114307 2.64335098915363 0.198491542624217 0.164960433890531 6.29933373886932 2.64335287837763
35 0.066 0.564385200512801 0.559807793645143 -0.292911034577581 -0.292913036967644 0.00429387579575552 0.00858982213033238 0.21128990528263 -9.00347291998837e-05 0.000233989004380652 5.94188489105862e-05 0.000171926182502419 0.170047144367396 6.49920871424735 -0.00254085526230074 0.0145487329163141 0.00157962513208653 0.0105082850034369 2.44339409995359 0.211290104793881 0.170047178583939 6.49923349334611 2.44339593165927
36 0.068 0.564820778747809 0.559807608484826 -0.292910537547793 -0.292912914964969 0.00429424063641984 0.00893480320413739 0.224488212212298 -9.49725788845778e-05 0.000264461892815482 6.24690652817339e-05 0.000193897799146553 0.174733978932886 6.69909077360974 -0.00238823143206001 0.0159708370313371 0.00146518393945305 0.0114919593069071 2.24344346956561 0.224488451726861 0.174734015909591 6.69911966797334 2.24344521919969
37 0.07 0.56528315336165 0.559807413754828 -0.29290997673001 -0.292912787091383 0.00429465138695211 0.00928875804606392 0.238086268377069 -9.95876549281237e-05 0.000297872352506001 6.52795846683984e-05 0.000217894019730047 0.179020918245658 6.89895704867465 -0.0022188522755262 0.0174883313941443 0.00134056322639853 0.0125335951504587 2.04349859530758 0.238086554419732 0.179020957847521 6.89899059951526 2.04350023964747
38 0.0720000000000001 0.565773123821317 0.559807210134206 -0.292909346058383 -0.29291265384663 0.00429511221249876 0.00965088687712003 0.252084040406997 -0.000103847987986683 0.000334415218392059 6.7831318187328e-05 0.000244032179748388 0.182907973314116 7.0988056425289 -0.00203425765121778 0.0191053476789049 0.00120702442832354 0.0136345891296047 1.84355897213297 0.252084380343486 0.182908015372126 7.09884444587503 1.84356048960812
39 0.0740000000000001 0.566291489523278 0.559806998362876 -0.292908639069136 -0.29291251576611 0.0042956275156711 0.0100203899393204 0.266481490947184 -0.000107724685532995 0.000374293743221621 7.01076823816926e-05 0.000272432376248466 0.18639515413419 7.29863445856486 -0.00183598489189585 0.0208261771508788 0.00106581003744832 0.014796305796913 1.64362409268547 0.266481893067128 0.186395198447824 7.29867916955324 1.64362546367708
40 0.0760000000000001 0.566839049785106 0.559806779235464 -0.29290784888341 -0.292912373415901 0.00429620194200375 0.0103964674936568 0.281278578241256 -0.000111191927554266 0.000417719926995574 7.20945583371212e-05 0.00030321740293604 0.189482469684858 7.49844118208552 -0.0016255689225253 0.0226552812308822 0.000918140882766315 0.0160200773246035 1.44369344735103 0.281279051847366 0.189482516024944 7.49849251955626 1.44369465448249
41 0.0780000000000001 0.567416603836243 0.559806553595166 -0.292906968189428 -0.292912227387877 0.00429684038528284 0.0107783198180598 0.296475255675527 -0.000114226961223096 0.000464914868145149 7.37802459127578e-05 0.00033651268554688 0.192169927923594 7.69326379170681 -0.00140454227415265 0.0245802433615494 0.000765213854087009 0.0172948895291874 1.24376652437842 0.296475811179413 0.192169976035495 7.6933224987878 1.24376755282312
42 0.0800000000000001 0.568024950807808 0.559806322327619 -0.292905989223938 -0.292912078294917 0.00429754799274594 0.0111651472053512 0.312051633408083 -0.000116810096650877 0.000516040900441772 7.51554137534693e-05 0.00037239696105279 0.194457535782372 7.80657881532115 -0.00117443541003403 0.0263271762758476 0.000608199858531666 0.0184215440852953 1.04384281008479 0.312052282302758 0.19445758538943 7.80664494346439 1.04384364795276
43 0.0820000000000001 0.568664810369875 0.559806086354779 -0.292904904025827 -0.292911926766222 0.00429832997312705 0.0115561499611893 0.327701570936811 -0.000118924702863232 0.00057022357324854 7.62130453468845e-05 0.000410198861888061 0.196345299163934 7.74832860281349 -0.000936776670124039 0.027525988616911 0.000448241926215287 0.0191341843740894 0.843921789023954 0.327702323782551 0.196345349971136 7.74840112115 0.843922427987754
44 0.0840000000000001 0.569335757091555 0.559805846628808 -0.292903708329645 -0.292911773442736 0.00429918878819349 0.0119505284020069 0.343044947819337 -0.000120557203331373 0.000626144854909416 7.69483814583304e-05 0.000448933698549147 0.197833222938468 7.57158478418422 -0.000693092486181434 0.0282752689630127 0.000286453628178806 0.0195077700581789 0.644002944286473 0.343045813009308 0.197833274636281 7.57166270960464 0.644003380955815
45 0.0860000000000001 0.570036990161153 0.559805604125966 -0.292902399446407 -0.292911618972696 0.00430012570792125 0.0123474828529432 0.357987910073548 -0.000121697072807958 0.000683324649100591 7.73588598595997e-05 0.000488229942120777 0.198921310941079 7.37137318761875 -0.000444907499730362 0.0288619774503617 0.000123917771877036 0.0197522572308733 0.444085757754682 0.357988895162796 0.198921363209406 7.37145615442109 0.444085997909017
46 0.0880000000000001 0.570767708731849 0.559805359840516 -0.292900975031048 -0.292911464007296 0.00430114170796198 0.0127462136457712 0.372530440569812 -0.000122336833330294 0.000741592764710863 7.74440525458386e-05 0.000527942727472641 0.199609565969486 7.17115326223649 -0.000196202408486723 0.0293644548468585 -3.67662289502135e-05 0.0199254662439779 0.2461099028149 0.372531552803908 0.199609618481697 7.17124106455072 0.246109983768843
47 0.0900000000000001 0.571527111923432 0.559805114778632 -0.292899433075348 -0.292911309196486 0.00430223747883114 0.0131459211168211 0.386672523122494 -0.000122481882441905 0.000800782468488025 7.72117949437989e-05 0.000567931807096688 0.199905750552339 6.97092551914246 4.69950467429924e-06 0.0297843931879038 -0.00016523175189187 0.0200297169969734 0.0870502566792038 0.386673769393548 0.199905802985723 6.97101792373769 0.0870504136206856
48 0.0920000000000001 0.572314398824339 0.559804869912987 -0.292897771901174 -0.292911155160117 0.00430341343519036 0.0135458366479806 0.400414142646382 -0.000122318035311597 0.000860730337462478 7.67831255382711e-05 0.000608061595460535 0.199957766996203 6.77069054578342 9.82884745814871e-05 0.0301234165424324 -0.000224601264670054 0.0200673501791343 0.0130049113153743 0.400415529452661 0.199957819150585 6.77078729436455 0.0130072220198272
49 0.0940000000000001 0.573128768494017 0.559804625506491 -0.292895990153998 -0.292911002063983 0.00430466972521298 0.0139457521848059 0.413755285305628 -0.000122088728543579 0.000921276134657755 7.63133898851186e-05 0.000648201207813225 0.199957770197601 6.57044900202045 0.000114519255189904 0.0303830922920855 -0.000234676850868753 0.0200407243708053 1.78492637337157e-06 0.413756818714645 0.199957822032016 6.57054981345413 0.000261134199416859
50 0.0960000000000001 0.573969419965562 0.559804381558072 -0.292894086796636 -0.292910849906557 0.00430600624002161 0.014345667728771 0.426695938654464 -0.000121859958290837 0.00098226270663082 7.58444181347961e-05 0.000688224492943756 0.199957774135909 6.37020161622925 0.000114251323679593 0.0305649416054709 -0.000234295319256894 0.0199522131221277 2.15339465009512e-06 0.426697624269449 0.199957825652342 6.3703061887066 0.000260676617088583
51 0.0980000000000001 0.574835552248635 0.559804138066658 -0.292892061103172 -0.292910698686311 0.00430742262318476 0.0147455832813496 0.439236091770545 -0.000121631723248861 0.00104353590107964 7.53762086080911e-05 0.000728010060301736 0.199957778811179 6.16994918151148 0.000113984127692035 0.0306704492220033 -0.000233914620312303 0.0198042019823249 2.52190282545861e-06 0.439237934700189 0.199957830011604 6.17005719465434 0.000260220658202657
52 0.1 0.575726364332644 0.559803895031179 -0.292889912653031 -0.292910548401723 0.00430891828026282 0.0151454988440157 0.45137573538051 -0.000121404021780069 0.00110494450351883 7.49087596535469e-05 0.000767441300873056 0.19995778422352 5.96969255203111 0.000113717694982807 0.0307010727049194 -0.000233534701993276 0.0195990853390365 2.89047431822897e-06 0.451377740211901 0.199957835109901 5.96980366894817 0.000259766291171652
53 0.102 0.576641055190157 0.559803652450571 -0.292887641325158 -0.292910399051272 0.00431049238838825 0.0155454144182437 0.463114861978669 -0.000121176852468929 0.00116634019189932 7.4442069800118e-05 0.000806406401657882 0.199957790373076 5.76943263956573 0.000113451942285181 0.0306582507089703 -0.000233155553891473 0.0193392632533151 3.25909698534188e-06 0.463117032753331 0.199957840947372 5.76954650886239 0.000259313472908523
54 0.104 0.577578823780559 0.55980341032377 -0.292885247292264 -0.292910250633443 0.00431214390586945 0.015945330005508 0.474453465938773 -0.000120950214010929 0.00122757750635471 7.3976137437981e-05 0.000844798353886316 0.199957797259908 5.56917040976655 0.000113186841843582 0.0305434104778956 -0.000232777203762468 0.0190271381263554 3.62776302054168e-06 0.474455806131727 0.199957847524066 5.56928666751211 0.000258862218994065
55 0.106 0.578538869053912 0.559803168649715 -0.292882731015132 -0.292910103146723 0.0043138715818038 0.0163452456072833 0.485391543617735 -0.000120724105101555 0.0012885138338109 7.35109609850681e-05 0.000882514954163304 0.199957804884129 5.36890687867497 0.000112922435291374 0.0303579748943405 -0.0002323996099729 0.0186651113480082 3.99648543425446e-06 0.485394056119512 0.199957854840089 5.36902515033267 0.000258412513248713
56 0.108 0.57952038995503 0.559802927427349 -0.292880093236928 -0.292909956589599 0.00431567396568611 0.0167451612250445 0.495929093453473 -0.000120498524269763 0.00134900940593208 7.30465389980894e-05 0.000919458799278349 0.19995781324585 5.1686431093087 0.000112658736506344 0.0301033685791429 -0.000232022758644978 0.0182555799574379 4.36525815494803e-06 0.495931780554991 0.199957862895544 5.16876301163089 0.000257964352031809
57 0.11 0.580522585427726 0.559802686655618 -0.292877334977508 -0.292909810960567 0.00431754941700091 0.0171450768602667 0.50606611605497 -0.00012027347015553 0.00140892730812747 7.25828699504882e-05 0.000955537273993056 0.199957822345161 4.96838020799805 0.000112395703855128 0.029781023171832 -0.000231646635900917 0.0178009331320422 4.73407077428156e-06 0.506068979435219 0.199957871690513 4.96850135088925 0.000257517707343393
58 0.112 0.58154465441925 0.559802446333469 -0.292874457527696 -0.29290966625812 0.00431949611478208 0.0175449925144252 0.515802614285465 -0.000120048941454343 0.0014681334986194 7.21199524544857e-05 0.000990662531806518 0.199957832182133 4.76811932086096 0.000112133330398834 0.029392382049076 -0.00023127124867961 0.0173035487015249 5.1029180880846e-06 0.515805655001903 0.199957881225057 4.76824130921326 0.000257072585129518
59 0.114 0.582585795884868 0.559802206459852 -0.292871462443514 -0.292909522480757 0.00432151206712814 0.0179449081889952 0.525138593338414 -0.000119824936833934 0.00152649683632378 7.16577849557697e-05 0.00102475146879916 0.199957842756834 4.5678616301531 0.000111871609198566 0.0289389044186294 -0.000230896607389397 0.0167657896784495 5.47182351512409e-06 0.525141811820019 0.199957891499236 4.56798406565932 0.000256628995051593
60 0.116 0.583645208792603 0.559801967033721 -0.292868351540351 -0.29290937962698 0.00432359512065728 0.0183448238854525 0.534074060806077 -0.000119601455017548 0.00158388911629392 7.11963660249281e-05 0.00105772569052032 0.199957854069427 4.36760835072214 0.000111610554132113 0.0284220686361247 -0.000230522646110787 0.0161900008278232 5.840770575527e-06 0.534077456848969 0.199957902513206 4.36773083367212 0.000256186886402314
61 0.118 0.584722092128092 0.559801728054032 -0.292865126887049 -0.292909237695293 0.00432574296989022 0.0187447396052729 0.542609026741303 -0.000119378494617406 0.00164018511086827 7.07356943713266e-05 0.00108951147211045 0.199957866119916 4.16736072635787 0.000111350151321687 0.0278433749043016 -0.000230149364843779 0.0155785052566303 6.20973367865262e-06 0.542612599506858 0.199957914266962 4.1674828574263 0.000255746255358152
62 0.12 0.585815644899568 0.559801489519743 -0.292861790799907 -0.292909096684202 0.00432795316654572 0.0191446553499322 0.550743503711509 -0.000119156054412262 0.00169526261591113 7.0275768565553e-05 0.00112003971154684 0.199957878908361 3.96712002594806 0.000111090400767289 0.0272043475697814 -0.00022977680175229 0.0149336010406633 6.57873061582492e-06 0.550747251726889 0.199957926760556 3.96724140798678 0.00025530713946669
63 0.122 0.586925066142938 0.559801251429814 -0.292858345836585 -0.292908956592218 0.0043302231287364 0.0195445711209064 0.558477506845095 -0.000118934133014337 0.0017490025011474 6.98165871643174e-05 0.0011492458762731 0.199957892434838 3.76688753972501 0.000110831288591024 0.0265065367745247 -0.000229404925611237 0.0142575579129358 6.94777022719472e-06 0.558481428006112 0.199957939994055 3.76700777957585 0.000254869507663381
64 0.124 0.588049554926949 0.559801013783211 -0.292854794789903 -0.292908817417854 0.00433255015005081 0.0199444869196715 0.565811053870409 -0.000118712729257897 0.00180128876300923 6.9358148863108e-05 0.00117706994319858 0.199957906699442 3.53708533862344 0.000110572759281952 0.0255557283494761 -0.000229033698256826 0.0134253458289682 7.31685996513411e-06 0.565815145446639 0.199957953967547 3.53720313635886 0.000254433304565603
65 0.126 0.58918831035842 0.559800776578897 -0.292851140681533 -0.292908679159623 0.0043349314085092 0.0203444027477041 0.572625848199589 -0.000118491841977209 0.0018512254145453 6.89004523712901e-05 0.00120294725958897 0.199957921702278 3.2094859855123 0.000110314882229118 0.0238896577207921 -0.000228663116219666 0.0121411166884012 7.68595716238443e-06 0.572630104119529 0.199957968681129 3.20959785855804 0.000253998558850271
66 0.128 0.590340058319747 0.559800539815843 -0.292847389888244 -0.292908541816044 0.00433736193908917 0.0207443186064806 0.578648997812458 -0.000118271469728981 0.0018968473938924 6.84434963982294e-05 0.00122563440995219 0.199957937443271 2.78101720087942 0.000110057664370993 0.0214605917515914 -0.000228293169091178 0.0103842094307031 8.05507032602958e-06 0.578653404793495 0.199957984134717 2.7811193898125 0.000253565267137376
67 0.13 0.59150290634967 0.559800303493018 -0.292843553291958 -0.292908405385637 0.00433983394614901 0.0211442344974772 0.583749917003106 -0.000118051611319725 0.00193706778155167 6.79872796949254e-05 0.00124448409731179 0.199957953922559 2.33201049612552 0.00010980104325764 0.0187851663079053 -0.00022792387421866 0.00849918868964238 8.42422789859575e-06 0.583754457433425 0.199958000328443 2.33210164287949 0.000253133421647552
68 0.132 0.59267505798776 0.559800067609397 -0.292839641617118 -0.292908269866925 0.00434233987547841 0.0215441504221709 0.58797703979696 -0.00011783226555595 0.00197198805912402 6.75318009013547e-05 0.00125963116471076 0.199957971140183 1.90736690201809 0.000109544998072586 0.0161709208801319 -0.000227555214254993 0.00668790649943629 8.79339396436806e-06 0.587981695919161 0.199958017262337 1.90744717507184 0.000252702999417837
69 0.134 0.593854814508858 0.559799832163956 -0.292835665339721 -0.292908135258434 0.00434487247080785 0.021944066382038 0.591379384611179 -0.000117613431327435 0.0020017514650722 6.70770588379054e-05 0.00127123572330953 0.199957989096135 1.50724616745923 0.000109289549632407 0.0136369137024306 -0.00022718714062786 0.00496156059032887 9.1625812839724e-06 0.591384138773005 0.199958034936387 1.50731602254449 0.000252273968972827
70 0.136 0.595040575526204 0.559799597155672 -0.292831634611258 -0.29290800155869 0.00434742481837165 0.0223439823785554 0.594006024466797 -0.000117395107357421 0.00202653571393374 6.66230523388433e-05 0.00127947740707207 0.199958007790508 1.13156082520716 0.000109034739570468 0.0111986669174002 -0.00022681966721505 0.00332859781404515 9.53179722651409e-06 0.594010859338686 0.199958053350674 1.13162113397004 0.000251846363934668
71 0.138 0.596230838606725 0.559799362583527 -0.292827559196865 -0.292907868766224 0.00434999038043614 0.0227438984132 0.595905627912007 -0.000117177292369153 0.0020465461327418 6.61697801690452e-05 0.00128455011456571 0.199958027223324 0.780010843692835 0.000108780512375617 0.00886839884514655 -0.00022645279748601 0.00179496988626793 9.90101403641751e-06 0.595910526670971 0.199958072505216 0.780063322233123 0.000251420165143711
72 0.14 0.597424198037852 0.559799128446503 -0.292823448426727 -0.292907736879569 0.00435256301882991 0.0231438144874487 0.597126067841569 -0.000116959985307918 0.00206200930931433 6.57172411488993e-05 0.00128665728661714 0.199958047394564 0.452116556103055 0.000108526833353384 0.00665529550220034 -0.000226086517562951 0.000364406937784778 1.02702395199383e-05 0.597131014322065 0.199958092399984 0.45216568429407 0.00025099534816656
73 0.142 0.598619342878091 0.559798894743585 -0.292819311159628 -0.29290760589726 0.00435513700958261 0.0235437306027782 0.59771409413642 -0.000116743185035739 0.0020731673147506 6.52654340987934e-05 0.00128600774231685 0.199958068304282 0.147249351892253 0.000108273751076027 0.00456580540389439 -0.000225720803159746 -0.000961303344218511 1.06394866875026e-05 0.597719072949784 0.199958113035026 0.147323257891599 0.000250571915481619
74 0.144 0.599815054414398 0.559798661473763 -0.292815155757468 -0.292907475817833 0.00435770704979918 0.0239436467606658 0.597715065249138 -0.000116526890303614 0.0020802725309299 6.48143579362603e-05 0.00128281207324027 0.199958089952511 -0.135340179480137 0.000108021272482439 0.00260394424772547 -0.000225355636929159 -0.00218204085442736 1.10087173751938e-05 0.597720061873783 0.199958134410365 0.135382812829588 0.000250149855612029
75 0.146 0.601010203139088 0.559798428636024 -0.292810990069504 -0.292907346639828 0.00436026825787557 0.0243435629625883 0.597172733418499 -0.000116311099945809 0.0020835830917415 6.43640115510768e-05 0.00127727957889914 0.199958112339152 -0.396496804250246 0.000107769335122576 0.000771599058951854 -0.000224991025810084 -0.00329908979215115 1.13779502278199e-05 0.597177734263548 0.199958156525896 0.396511279964671 0.000249729151360474
76 0.148 0.602203745348072 0.559798196229363 -0.292806821425101 -0.292907218361787 0.00436281616811478 0.0247434792100224 0.596129078032137 -0.000116095812963124 0.00208335892716571 6.39143938330199e-05 0.00126961571407166 0.199958135464312 -0.63713793364839 0.000107517952874225 -0.000931176580287739 -0.000224626952455287 -0.00431489211808605 1.17472082408754e-05 0.596134070477377 0.199958179381718 0.637153224803543 0.000249309796961668
77 0.15 0.603394719451216 0.559797964252772 -0.292802656633796 -0.292907090982253 0.00436534672073186 0.0251433955044455 0.594624181683905 -0.000115881028134312 0.00207985838542035 6.34655037412556e-05 0.0012600200104268 0.199958159327985 -0.858233595635304 0.000107267139615175 -0.0025058817555712 -0.000224263389109191 -0.00523282103672556 1.21164614799718e-05 0.594629154099077 0.199958202977819 0.858253206540167 0.000248891774823431
78 0.152 0.604582242074808 0.55979773270525 -0.292798501991559 -0.292906964499772 0.00436785624815648 0.0255433118473344 0.592696143649595 -0.000115666744404663 0.00207333540014343 6.30173402765832e-05 0.00124868442992476 0.199958183930157 -1.06078897545159 0.000107016881467636 -0.00395530648858444 -0.00022390035658848 -0.00605697668062954 1.24857069128126e-05 0.592701085395994 0.199958227314176 1.06081364143546 0.000248475100315141
79 0.154 0.605765504025815 0.559797501585795 -0.292794363292195 -0.292906838912892 0.00437034145845155 0.0259432282401662 0.590381025782099 -0.000115452960608442 0.00206403715946601 6.25699023149017e-05 0.00123579210370428 0.199958209270812 -1.24582937224837 0.000106767171492716 -0.00528329199833699 -0.000223537854893152 -0.00679200462712359 1.28549289268864e-05 0.590385927199356 0.199958252390765 1.24585908884511 0.000248059772386621
80 0.156 0.606943766177936 0.559797270893408 -0.292790245842921 -0.292906714220163 0.0043727994165713 0.0263431446844176 0.587712826160602 -0.000115239675718692 0.00205220223215008 6.21231888570106e-05 0.00122151641141627 0.199958235349873 -1.41438739407335 0.000106517974995945 -0.00649451362133568 -0.000223175828512056 -0.00744293712513083 1.3224138797896e-05 0.587717678541344 0.199958278207502 1.4144218877456 0.000247645729372072
81 0.158 0.608116355330457 0.559797040627092 -0.292786154483267 -0.292906590420136 0.00437522752409722 0.0267430611815657 0.584723476205806 -0.000115026888708458 0.00203805910498067 6.16771990008535e-05 0.00120602035520376 0.199958262167368 -1.56749219931695 0.000106269340549581 -0.00759428737950873 -0.000222814287853534 -0.00801505640676824 1.35933391279264e-05 0.584728271760665 0.199958304764408 1.56753108717164 0.000247233004433403
82 0.16 0.609282660082759 0.559796810785853 -0.292782093606502 -0.292906467511367 0.00437762349799212 0.0271429777330871 0.581442857363334 -0.000114814598356494 0.00202182508263204 6.12319317055964e-05 0.00118945618578919 0.19995828972323 -1.70616059021189 0.000106021233459153 -0.00858840009873573 -0.000222453222509244 -0.00851377856842666 1.39625143044664e-05 0.581447589178527 0.199958332061409 1.70620344760933 0.00024682157514012
83 0.162 0.61044212675991 0.559796581368698 -0.292778067182936 -0.292906345492409 0.00437998534884038 0.0275428943404586 0.577898833844958 -0.000114602803774622 0.00200370550458573 6.07873861108165e-05 0.00117196524093005 0.199958318017425 -1.83138976599106 0.00010577363984687 -0.00948296169714368 -0.000222092608193058 -0.00894455677493549 1.4331685581348e-05 0.577903495834415 0.199958360098463 1.83143615958494 0.000246411417576486
84 0.164 0.611594255418139 0.559796352374638 -0.292774078784483 -0.292906224361822 0.00438231135895584 0.0279428110051568 0.57411729829937 -0.000114391503797107 0.00198389323584347 6.03435612728242e-05 0.00115367795868945 0.199958347049972 -1.94415154979727 0.000105526594407209 -0.0102842786092738 -0.000221732483068893 -0.00931280186560606 1.47008277912031e-05 0.574121885153119 0.199958388875582 1.94420105525231 0.00024600258232959
85 0.166 0.612738595953108 0.559796123802683 -0.292770131609993 -0.292906104118164 0.00438460006067513 0.0283427277286585 0.570122227645769 -0.000114180697396993 0.00196256839014863 5.9900456178541e-05 0.00113471403346763 0.199958376820736 -2.04538791484521 0.000105280027751231 -0.0109987470138517 -0.000221372788156149 -0.00962381845395765 1.50699175360813e-05 0.570126734776048 0.199958418392624 2.04544012684614 0.000245594987721393
86 0.168 0.613874744328722 0.559795895651848 -0.292766228510923 -0.292905984759997 0.00438685021508971 0.0287426445124397 0.565935746639989 -0.000113970383686102 0.00193989824778806 5.94580701201996e-05 0.00111518268487362 0.199958407329642 -2.13600764745189 0.000105033967634505 -0.0116327639396174 -0.000221013485290911 -0.00988275497635493 1.54390025070006e-05 0.565940170126308 0.199958448649507 2.13606218542807 0.000245188616856274
87 0.17 0.615002338939668 0.559795667921149 -0.292762372017001 -0.292905866285884 0.00438906079141463 0.029142561357977 0.561578197055961 -0.000113760561526455 0.00191603733439016 5.90164022373773e-05 0.00109518301356221 0.199958438576746 -2.21688399747174 0.000104788455690397 -0.012192654604698 -0.00022065464039267 -0.0100945658169232 1.58080597223442e-05 0.561582533590143 0.199958479646279 2.21694050874886 0.00024478354831357
88 0.172 0.616121057116946 0.559795440609602 -0.292758564361585 -0.292905748694388 0.00439123094714396 0.0295424782667467 0.557068210650102 -0.00011355122986334 0.00189112762936927 5.85754515586289e-05 0.00107480442160593 0.199958470561881 -2.28885318117461 0.000104543429468862 -0.0126846143241876 -0.000220296236114192 -0.0102639837393226 1.61770449466636e-05 0.557072457482114 0.199958511382767 2.28891134248924 0.000244379739492449
89 0.174 0.617230611782268 0.559795213716229 -0.292754807506484 -0.292905631984078 0.00439336000910105 0.0299423952402246 0.552422784331263 -0.000113342387808579 0.00186529887709341 5.81352172929205e-05 0.00105412707860492 0.199958503284926 -2.35271361595512 0.000104298861214325 -0.0131146631367207 -0.000219938199597092 -0.0103955012167867 1.65459972112369e-05 0.552426939216494 0.199958543858841 2.35277313388592 0.000243977118017918
90 0.176 0.618330748254271 0.559794987240051 -0.292751103166077 -0.292905516153519 0.00439544745545838 0.0303423122798864 0.547657356186281 -0.000113134034418483 0.00183866897682239 5.76956987602406e-05 0.00103322241673878 0.19995853674587 -2.40922577914026 0.000104054806437936 -0.0134886117657273 -0.000219580544719155 -0.0104933592605036 1.69149208528729e-05 0.547661417334758 0.199958577074485 2.40928638980715 0.000243575723152896
91 0.178 0.619421241207013 0.559794761180091 -0.292747452830577 -0.292905401201283 0.00439749289876801 0.030742229387208 0.542785881214702 -0.000112926168582827 0.0018113444300305 5.72568951140439e-05 0.0010121536415629 0.199958570944609 -2.45911259656728 0.000103811258200803 -0.0138120372812633 -0.000219223306174852 -0.0105615424392247 1.72837889833577e-05 0.542789847242613 0.199958611029588 2.45917406483324 0.000243175584015106
92 0.18 0.62050189177913 0.559794535535377 -0.292743857788357 -0.292905287125939 0.00439949607002463 0.0311421465636649 0.537820905800012 -0.000112718789385679 0.00178342082769733 5.68188055355411e-05 0.000990976246981883 0.199958605881026 -2.50306028001801 0.000103568140175092 -0.0140902669948373 -0.000218866418044692 -0.0106037790700841 1.76526024700529e-05 0.537824775683788 0.199958645724024 2.50312239835738 0.0002427766112726
93 0.182 0.621572524830214 0.559794310304934 -0.292740319147266 -0.29290517392606 0.00440145680375593 0.0315420638107321 0.53277364009463 -0.000112511896022127 0.00175498336205115 5.63814294418651e-05 0.000969738525282564 0.199958641555019 -2.54171954315596 0.000103325507871954 -0.0143283695255847 -0.000218509880328676 -0.0106235454313749 1.80213673844909e-05 0.532777413127744 0.199958681157686 2.54178213030774 0.000242378831709076
94 0.184 0.622632986339508 0.559794085487793 -0.292736837854908 -0.292905061600221 0.00440337502412576 0.031941981129885 0.527654027627388 -0.000112305487354192 0.00172610734959499 5.59447660142264e-05 0.000948482065256383 0.199958677966495 -2.57570713703414 0.000103083389046965 -0.0145311520108326 -0.000218153703435142 -0.010624073308596 1.83900715836072e-05 0.527657703379961 0.199958717330473 2.57577003652909 0.000241982268260974
95 0.186 0.623683140940723 0.559793861082984 -0.292733414717868 -0.292904950146996 0.00440525073201696 0.0323418985225981 0.522470811546493 -0.000112099562465939 0.00169685875400782 5.55088146281246e-05 0.00092724223204818 0.199958715115305 -2.60560765735773 0.000102841707372292 -0.0147031622328708 -0.000217797859608515 -0.0106083601469214 1.8758701189614e-05 0.522474389827711 0.199958754242229 2.60567073598448 0.000241586864907055
96 0.188 0.624722869585694 0.559793637089543 -0.292730050419892 -0.292904839564962 0.00440708399305395 0.0327418159903462 0.517231596997958 -0.000111894120524703 0.00166729470066351 5.50735745757924e-05 0.000906048624668698 0.1999587530013 -2.63197558438705 0.000102600476725723 -0.0148486948813031 -0.00021744236619603 -0.010579181248041 1.91272601091086e-05 0.517235077821281 0.199958791892799 2.63203873064685 0.000241192646074783
97 0.19 0.625752067328715 0.559793413506502 -0.292726745539065 -0.292904729852698 0.00440887492651564 0.0331417335346033 0.511942909208945 -0.000111689160559036 0.00163746397448261 5.46390451633405e-05 0.000884925507056016 0.199958791624346 -2.65533752635133 0.000102359704046151 -0.014971801420155 -0.000217087178094877 -0.0105391033773314 1.94957583063426e-05 0.511946292760031 0.199958830282042 2.65540064893932 0.000240799577444712
98 0.192 0.62677064122253 0.5597931903329 -0.292723500563994 -0.292904621008782 0.00441062369508217 0.0335416511568436 0.506610246892552 -0.000111484681708518 0.00160740749498289 5.42052258634129e-05 0.000863892211159372 0.199958830984333 -2.6761946458273 0.000102119396272471 -0.0150763027374767 -0.000216732288366161 -0.0104904993069102 1.98641892865114e-05 0.506613533499787 0.199958869409841 2.67625767216736 0.000240407657805439
99 0.194 0.627778508316285 0.559792967567776 -0.292720315909085 -0.292904513031795 0.00441233049536027 0.0339415688585407 0.501238130625636 -0.000111280682973946 0.0015771587635327 5.37721160098758e-05 0.000842963509828375 0.199958871081103 -2.69502525702958 0.000101879546465788 -0.0151658041576407 -0.000216377707418225 -0.0104355634064634 2.02325326631447e-05 0.501241320733164 0.199958909276031 2.69508813188488 0.000240016894475382
100 0.196 0.628775593745033 0.559792745210169 -0.29271719192894 -0.292904405920318 0.00441399554912149 0.034341486641168 0.495830145864434 -0.000111077163522655 0.00154674427835233 5.333971503374e-05 0.000822149957533518 0.199958911914464 -2.71228759101544 0.000101640106053846 -0.0152437124693871 -0.000216023407495491 -0.0103763276148444 2.06007893036042e-05 0.495833240007526 0.199958949880414 2.71235027518957 0.00023962724441209
101 0.198 0.629761828899743 0.559792523259121 -0.292714128931972 -0.292904299672934 0.00441561909519041 0.0347414045061985 0.490388980261574 -0.000110874122549731 0.00151618391365515 5.29080223798938e-05 0.000801458199368998 0.19995895348426 -2.72842273402879 0.000101401095853326 -0.015313254660837 -0.000215669385128514 -0.0103146776727486 2.09689583405281e-05 0.490391979044205 0.199958991222827 2.7284852031684 0.000239238715796281
102 0.2 0.630737149666079 0.559792301713678 -0.292711127193286 -0.292904194288228 0.00441720138191896 0.035141322455105 0.484916454928319 -0.000110671559139241 0.00148549125970898 5.24770374932259e-05 0.000780891246842524 0.199958995790297 -2.74385775392988 0.000101162543619804 -0.0153774979486099 -0.000215315633378399 -0.0102523696745779 2.13370284982139e-05 0.484919359002783 0.199959033303068 2.74391999743582 0.000238851315662911
103 0.202 0.631701494719456 0.559792080572885 -0.292708186966933 -0.292904089764784 0.00441874266017778 0.0355412404893597 0.479413549245855 -0.000110469472375252 0.00145467392186072 5.20467598463802e-05 0.000760448720670686 0.199959038832374 -2.75900903947551 0.000100924421597703 -0.0154393712051282 -0.000214962141836805 -0.0101910467382657 2.1705008450279e-05 0.479416359294281 0.199959076120932 2.7590710595279 0.000238465026135332
104 0.204 0.632654803863062 0.559791859835789 -0.292705308497598 -0.292903986101189 0.00442024317680165 0.0359411586104345 0.473880418770417 -0.000110267861452851 0.00142373377488847 5.16171889258787e-05 0.000740127059889461 0.199959082610331 -2.77428588835864 0.000100686715909237 -0.0155016878361502 -0.000214608896625945 -0.0101322558936773 2.20729077377024e-05 0.473883135488015 0.19995911967625 2.77434769906029 0.000238079832257145
105 0.206 0.633597016394538 0.559791639501439 -0.292702492031833 -0.292903883296029 0.00442170316841733 0.036341076819801 0.46831640569242 -0.000110066725511615 0.00139266717051611 5.11883242598765e-05 0.000719919697095977 0.199959127124005 -2.79009439309306 0.000100449440432193 -0.0155671697893433 -0.000214255869990243 -0.0100774650681548 2.24406942680999e-05 0.468319029772318 0.199959163968853 2.79015601973201 0.000237695714449485
106 0.208 0.634528069485832 0.559791419568887 -0.292699737828916 -0.292903781347892 0.00442312285559003 0.0367409951189305 0.462720041198044 -0.000109866063691122 0.00136146509573109 5.07601654459177e-05 0.000699817199616842 0.199959172373108 -2.80684168894179 0.000100212567410995 -0.0156384730408409 -0.000213903075807486 -0.0100280804112007 2.28083602352158e-05 0.462722573317576 0.199959208998447 2.80690316737457 0.000237312675185347
107 0.21 0.63544789655933 0.559791200037184 -0.29269704617145 -0.292903680255367 0.0044245024372158 0.0371409135092935 0.457089038936653 -0.000109665875241971 0.00133011327835275 5.03327119566465e-05 0.000679807375451174 0.199959218357446 -2.82494064696159 9.99760829678563e-05 -0.0157182148685652 -0.000213550524486017 -0.00998546400773899 2.31759281904553e-05 0.457091479744957 0.199959254764832 2.8250020231189 0.000236930722620216
108 0.212 0.636356425641579 0.559790980905386 -0.292694417375803 -0.292903580017044 0.00442584208509184 0.0375408319923603 0.451420278610198 -0.00010946615935925 0.00129859223625683 4.99059633479737e-05 0.000659875343585886 0.199959265076821 -2.84481511775986 9.97400287361393e-05 -0.0158090031274205 -0.000213198143167446 -0.00995095225664318 2.35433773171367e-05 0.451422628717008 0.199959301267802 2.844876447276 0.000236549809126598
109 0.214 0.637253577673771 0.559790762172547 -0.292691851802505 -0.292903480631514 0.00442714193859015 0.0379407505696008 0.445709778465613 -0.000109266915127026 0.00126687726584307 4.94799193839767e-05 0.000640003566424601 0.199959312530955 -2.86690586023819 9.95043908380565e-05 -0.0159134679600381 -0.000212845935321225 -0.00992587512703424 2.39107006763661e-05 0.445712038431135 0.199959348507074 2.86696720820584 0.000236169933703794
110 0.216 0.638139264755441 0.559790543837725 -0.292689349866739 -0.292903382097366 0.00442840209935753 0.0383406692424841 0.439952655169245 -0.000109068141795898 0.00123493836441668 4.90545796066888e-05 0.000620171843077749 0.199959360719624 -2.89167732679674 9.92691345791385e-05 -0.0160342965363491 -0.000212493946050163 -0.00991157651959728 2.42779017375905e-05 0.439954825495013 0.199959396482416 2.89173876764912 0.000235791125152837
111 0.218 0.639013388294448 0.55979032589998 -0.292686912049048 -0.292903284413195 0.00442962262596246 0.0387405880124792 0.434143069158427 -0.00010886983858871 0.00120274007969767 4.86299435997761e-05 0.000600357260346212 0.199959409642562 -2.91962552304708 9.90342807760668e-05 -0.0161742717032232 -0.000212142137190341 -0.00990943639991858 2.46449726945541e-05 0.434145150279072 0.199959445193557 2.91968714057223 0.000235413359475696
112 0.22 0.639875837032075 0.559790108358371 -0.292684538906421 -0.292903187577592 0.00443080352839892 0.0391405068810544 0.428274153077057 -0.000108672004672794 0.00117024127760379 4.82060110579274e-05 0.000580534097478074 0.199959459299514 -2.95128722165028 9.8799801673266e-05 -0.0163363154739859 -0.000211790484455632 -0.00992089508721621 2.50119161493423e-05 0.428276145352921 0.199959494640235 2.95134910914294 0.000235036605800223
113 0.222 0.640726484906756 0.559789891211961 -0.292682231083937 -0.292903091589151 0.00443194476235237 0.0395404258496773 0.422337920271825 -0.000108474639382017 0.00113739481780173 4.77827816619536e-05 0.000560673679997347 0.199959509690227 -2.9872508911094 9.85657042096299e-05 -0.0165235385304885 -0.000211438980907141 -0.00994748022235117 2.53787225609758e-05 0.422339823982392 0.19995954482219 2.98731315166694 0.000234660862208034
114 0.224 0.641565188713162 0.559789674459813 -0.292679989327149 -0.292902996446465 0.00443304622311891 0.0399403449198153 0.416325149512619 -0.000108277741855955 0.00110414712348183 4.73602551342988e-05 0.00054074417658867 0.199959560814405 -3.0281698084264 9.83320092018402e-05 -0.0167392975314317 -0.000211087605728188 -0.00999083754442406 2.57453806537522e-05 0.416326964850752 0.199959595739121 3.02823255539958 0.000234286119842249
115 0.226 0.642391785504806 0.559789458100994 -0.292677814495443 -0.29290290214813 0.00443410773905872 0.0403402640929349 0.41022524103812 -0.000108081311345209 0.001070437627676 4.69384312390408e-05 0.000520710329819651 0.19995961267175 -3.07477797034659 9.80986888943213e-05 -0.0169872622565736 -0.000210736358918773 -0.0100527665436792 2.61118834887774e-05 0.410226968105153 0.199959647390723 3.07484132795871 0.000233912368617946
116 0.228 0.643206089677315 0.559789242134568 -0.292675707576639 -0.29290280869274 0.00443512906443819 0.0407401833705023 0.404026037631233 -0.000107885347100378 0.00103619807445554 4.65173096986237e-05 0.000500533110413953 0.199959665261939 -3.12790961573549 9.78657363481793e-05 -0.0172714952305364 -0.000210385240478894 -0.0101352621191542 2.6478239739669e-05 0.404027676432987 0.199959699776667 3.1279737198858 0.000233539608936139
117 0.23 0.644007889655331 0.559789026559605 -0.292673669703145 -0.292902716078892 0.00443610987150038 0.0411401027539827 0.397713602575178 -0.000107689848399817 0.00100135164675386 4.60968902771252e-05 0.000480169281343034 0.199959718584708 -3.24299114641546 9.76331446245204e-05 -0.0178931514223379 -0.000210034236530765 -0.0103852196954926 2.6844455477959e-05 0.397715153019074 0.199959752896683 3.24305713692883 0.000233167828471772
118 0.232 0.644796944087615 0.559788811375174 -0.292671702170052 -0.292902624305179 0.00443704974156356 0.0415400222448411 0.391054073045571 -0.00010749481452188 0.000964625468766188 4.56771727525007e-05 0.000458992231631982 0.199959772639761 -3.48803197061653 9.74009206622383e-05 -0.0192045270797081 -0.000209683340135491 -0.0109712057685257 2.7210500776198e-05 0.391055532145621 0.199959806750467 3.48810209272312 0.000232797022808968
119 0.234 0.645572105947514 0.559788596580347 -0.29266981120127 -0.292902533370201 0.00443794584042691 0.0419399418445417 0.383761474692712 -0.000107300244717168 0.000924533538435023 4.52581569165833e-05 0.000436284458268931 0.199959827426712 -3.81744986249071 9.71690852780149e-05 -0.0209166987619191 -0.000209332530476391 -0.0117453952865748 2.75763734763901e-05 0.38376283635172 0.199959861337628 3.81752523439308 0.000232427183916866
120 0.236 0.646331989986386 0.559788382174196 -0.292668004035898 -0.292902443272552 0.00443879487939663 0.042339861554548 0.375784273595608 -0.000107106138180768 0.000880958673718512 4.48398426305951e-05 0.000412010650485683 0.199959882945254 -4.15583939317176 9.69375898995927e-05 -0.0225877199444557 -0.000208981790206231 -0.0124885191589083 2.79420818080633e-05 0.375785532082782 0.199959916657855 4.1559195408527 0.000232058279122101
121 0.238 0.647075243041896 0.559788168155794 -0.292666287366575 -0.29290235401083 0.00443959388302885 0.0427397813763227 0.367138117120025 -0.000106912494357569 0.0008341826586572 4.44222297557583e-05 0.000386330381633298 0.199959939195039 -4.48659888150487 9.6706420649184e-05 -0.0241136120376905 -0.000208631115855562 -0.013150406701079 2.83076175347507e-05 0.367139268063645 0.199959972710789 4.48668295325207 0.000231690300850958
122 0.24 0.647800542454866 0.559787954524218 -0.292664667305263 -0.292902265583633 0.00444034020092317 0.0431397013113281 0.357837878069589 -0.000106719312498171 0.00078450422556775 4.40053181671729e-05 0.000359409023681367 0.199959996175725 -4.8101073447937 9.64756538546218e-05 -0.0254859793130668 -0.000208280500485491 -0.0137282024480906 2.86729706852617e-05 0.357838918513725 0.199960029496086 4.81019445211129 0.000231323275778901
123 0.242 0.648506594554174 0.559787741278544 -0.292663149349673 -0.292902177989557 0.00444103151912358 0.0435396213610256 0.34789768774085 -0.000106526591742151 0.000732238741404933 4.35891077538164e-05 0.000331417571840936 0.199960053886922 -5.12672772421533 9.62452201269669e-05 -0.0266965778372707 -0.000207929937157125 -0.0142191293791421 2.90381369089099e-05 0.347898616189561 0.199960087013348 5.12681695100836 0.000230957170398745
124 0.244 0.64919213320583 0.559787528417851 -0.292661738350298 -0.292902091227202 0.00444166587121053 0.0439395415268758 0.337330967172727 -0.000106334331617663 0.000677717914218667 4.31735984185444e-05 0.000302532506164798 0.199960112328272 -5.43680772863151 9.60150986495378e-05 -0.0277373094041688 -0.000207579415462122 -0.0146204729130697 2.9403130534511e-05 0.337331783621372 0.199960145262212 5.43689814091349 0.000230591970756803
125 0.246 0.649855918422865 0.559787315941218 -0.292660438478016 -0.292902005295164 0.00444224164914823 0.0443394618103387 0.326150456826324 -0.000106142531347553 0.000621289503788258 4.27587900919679e-05 0.000272935680188657 0.199960171499444 -5.74068056843153 9.57853379944086e-05 -0.0286002237413752 -0.000207228900705939 -0.0149295700793343 2.97679254510075e-05 0.326151162779704 0.199960204242339 5.74077122463769 0.000230227664819308
126 0.248 0.650496735033135 0.559787103847726 -0.292659253192282 -0.292901920192041 0.00444275761393129 0.0447393822128736 0.314368244899001 -0.000105951190265686 0.000563317019253166 4.23446828157206e-05 0.000242814225847461 0.199960231399974 -6.03838544029712 9.55559034674766e-05 -0.0292761991003969 -0.000206878417174856 -0.0151431480219924 3.01325010082511e-05 0.314368843376202 0.199960263953262 6.03847539834005 0.00022986425950389
127 0.25 0.651113391402461 0.559786892136457 -0.292658185209939 -0.292901835916432 0.00444321290605162 0.0451393027359386 0.301996915065135 -0.000105760307733683 0.000504184707386671 4.19312764232685e-05 0.000212363088100688 0.199960292029448 -6.2815889930046 9.5326815885605e-05 -0.0295358003749036 -0.000206527971807831 -0.0151497336680841 3.0496879417641e-05 0.301997410600089 0.199960324394557 6.28167669933518 0.000229501774764725
128 0.252 0.651704722693396 0.559786680806495 -0.292657236453453 -0.292901752466936 0.00444360706628369 0.0455392233809914 0.289241888926983 -0.000105569883002143 0.000445173817753552 4.15185709284893e-05 0.000182215291175125 0.199960353387492 -6.38575044342777 9.5098075248062e-05 -0.0290196092260506 -0.000206177474398954 -0.0147757748718631 3.08610572860579e-05 0.28924228890705 0.199960385565848 6.38583347629584 0.000229140131191005
129 0.254 0.652270358958169 0.559786469856925 -0.292656404514668 -0.292901669842149 0.00444394176721633 0.0459391441494886 0.276453913291424 -0.000105379915432691 0.000388106270482469 4.11065665256726e-05 0.000153259988613236 0.199960415473677 -6.36131525394432 9.48696399216686e-05 -0.0278534719178047 -0.00020582695270388 -0.0140882115565524 3.12250286391147e-05 0.276454228199251 0.199960447466697 6.36139183305568 0.000228779337903898
130 0.256 0.652810538346561 0.559786259286833 -0.292655684028371 -0.29290158804067 0.00444422010623814 0.0463390650428861 0.263796627911206 -0.000105190404442457 0.000333759930082333 4.06952631176738e-05 0.000125862444948915 0.199960478287606 -6.29038651493024 9.46415099067898e-05 -0.0264768041588481 -0.000205476444886665 -0.0133063366714037 3.1588783672154e-05 0.26379686907613 0.199960510096704 6.29045630991666 0.000228419430116148
131 0.258 0.653325545469814 0.559786049095307 -0.292655069474948 -0.292901507061096 0.00444444521699612 0.046738986062639 0.251292367231703 -0.000105001349393063 0.000282199053847076 4.0284660746126e-05 0.000100034641927621 0.199960541828812 -6.20872279795403 9.44137129588184e-05 -0.0250742151867988 -0.000205125888497193 -0.012521394110801 3.19523010480771e-05 0.251292545596062 0.199960573455392 6.20878605553548 0.00022806036233572
132 0.26 0.653815707815488 0.559785839281436 -0.292654555232156 -0.292901426902027 0.00444462024480585 0.0471389072102013 0.238961736719389 -0.000104812749590621 0.000233463069335138 3.9874759563685e-05 7.57768685057113e-05 0.19996060609681 -6.11715776478726 9.41862490777544e-05 -0.0236575990568421 -0.000204775276596569 -0.0117389371912316 3.23155825016075e-05 0.238961862779577 0.199960637542274 6.11721477503746 0.000227702130628935
133 0.262 0.654281392416692 0.559785629844309 -0.292654135622671 -0.292901347562058 0.00444474832447014 0.0475388284870263 0.226823736172554 -0.000104624604396752 0.000187568657619708 3.94655596397397e-05 5.30788931626946e-05 0.199960671091142 -6.01646532420729 9.39590905080222e-05 -0.0222378222468344 -0.000204424616123688 -0.010963948533782 3.26786427778946e-05 0.226823819936634 0.199960702356883 6.01651641120461 0.000227344733961922
134 0.264 0.654723002760178 0.559785420783018 -0.292653804957525 -0.292901269039788 0.0044448325603785 0.0479387498945659 0.21489587542256 -0.000104436913228589 0.0001445117803478 3.90570610991902e-05 3.19210743705833e-05 0.199960736811382 -5.90736336019553 9.3732223371834e-05 -0.0208247533904637 -0.000204073875853527 -0.0102008706273637 3.30414758054065e-05 0.214895926383536 0.199960767898789 5.90740887339754 0.000226988139838864
135 0.266 0.655140975918382 0.559785212096656 -0.292653557575549 -0.292901191333814 0.00444487600876763 0.0483386714342718 0.203194282731772 -0.000104249675503265 0.000104269644057853 3.86492641363256e-05 1.22754106532397e-05 0.199960803257045 -5.79051730298373 9.35056754247653e-05 -0.0194272960739316 -0.000203723055786087 -0.00945363570151873 3.34040607674612e-05 0.203194309855674 0.199960834167502 5.79055760935117 0.000226632358835226
136 0.268 0.655535779891105 0.559785003784316 -0.292653387878949 -0.292901114442731 0.00444488166202112 0.0487385931075941 0.191733806210625 -0.00010406289052689 6.68025960520734e-05 3.82421688760459e-05 -5.89346843549165e-06 0.199960870427625 -5.66654353790357 9.32794397279223e-05 -0.0180534238738983 -0.000203372176738048 -0.00872569482814055 3.37663902949536e-05 0.191733817938655 0.199960901162507 5.66657901478665 0.000226277407755786
137 0.27 0.655907911143224 0.559784795845094 -0.292653290365165 -0.292901038365138 0.00444485243489388 0.0491385149159823 0.180528108580158 -0.000103876557744353 3.20559485622595e-05 3.78357754293734e-05 -2.26273686593226e-05 0.199960938322606 -5.53601264977054 9.30534815868355e-05 -0.0167102170399447 -0.000203021176259366 -0.00802004624170237 3.41284656785179e-05 0.180528112844263 0.199960968883285 5.53604367855914 0.000225923218405585
138 0.272 0.656257892325426 0.559784588278085 -0.292653259655155 -0.29290096309963 0.00444479115254648 0.0495384368608845 0.169589755611543 -0.000103690676600543 -3.82721077052394e-08 3.74300841710084e-05 -3.79736534023012e-05 0.199961006941487 -5.39945250146305 9.28278287570804e-05 -0.0154039004676698 -0.000202670037002805 -0.00733926263686567 3.44902908316902e-05 0.169589759862979 0.199961037329329 5.39947946199273 0.000225569789316138
139 0.274 0.656586270165671 0.559784381082387 -0.292653290518253 -0.292900888644801 0.00444470054028027 0.0499383589437482 0.158930298574306 -0.000103505246429325 -2.95596533084197e-05 3.70250952813622e-05 -5.19844192067853e-05 0.199961076283769 -5.25735114796643 9.2602488177551e-05 -0.0141398825773131 -0.000202318817948965 -0.0066855172856095 3.48518436332767e-05 0.158930309825001 0.199961106500132 5.2573744136636 0.000225217175005767
140 0.276 0.656893613519723 0.559784174257099 -0.292653377893768 -0.292900814999249 0.00444458321486965 0.0503382811660196 0.148560351019677 -0.000103320266647833 -5.65978024169577e-05 3.66208088992126e-05 -6.47157225447392e-05 0.199961146348862 -5.11015958893495 9.23774182148839e-05 -0.0129227947336108 -0.000201967477464482 -0.00606060934077445 3.52131214811923e-05 0.148560375896555 0.1999611763951 5.11017952267756 0.000224865322524089
141 0.278 0.657180511569749 0.559783967801321 -0.292653516909463 -0.292900742161566 0.0044444416773901 0.0507382035291437 0.138489660218566 -0.000103135736756465 -8.12508322428628e-05 3.62172253715043e-05 -7.62268565698831e-05 0.199961217136255 -4.958294362839 9.21526396857607e-05 -0.0117565308009604 -0.000201615970446545 -0.0054659880640781 3.55741382532248e-05 0.138489705031404 0.199961247013716 4.95831131350211 0.000224514204122178
142 0.28 0.657447572160597 0.559783761714152 -0.292653702897097 -0.292900670130347 0.00444427830744337 0.0511381260345646 0.128727173568321 -0.00010295165608909 -0.000103623925620799 3.58143450174264e-05 -8.65796748010516e-05 0.199961288645415 -4.80213998686751 9.19281664679693e-05 -0.0106442868651191 -0.000201264303834048 -0.00490277600115329 3.59348809389481e-05 0.128727244392346 0.19996131835544 4.80215428651842 0.000224163831730417
143 0.282 0.657695420264023 0.559783555994696 -0.292653931405166 -0.292900598904186 0.00444409535869089 0.0515380486837253 0.119281100271096 -0.000102768024090594 -0.000123827979703339 3.54121681561681e-05 -9.58379605744963e-05 0.199961360875779 -4.64205124851152 9.17039430503585e-05 -0.00958860089245171 -0.000200912481096438 -0.00437179127881631 3.62953261195953e-05 0.119281203046274 0.199961390419706 4.64206321021519 0.000223814183932649
144 0.284 0.657924696561682 0.559783350642056 -0.292654198209016 -0.292900528481674 0.00444389495560107 0.0519379714780677 0.110158968574275 -0.000102584840316888 -0.000141978329190606 3.50106950930406e-05 -0.000104066839916317 0.199961433826719 -4.47835535392903 9.14800110662916e-05 -0.00859139197284529 -0.000200560495294821 -0.00387356898987056 3.66554842035071e-05 0.110159109224346 0.199961463205878 4.47836527012007 0.000223465275199048
145 0.286 0.65813605613832 0.559783145655335 -0.292654499318482 -0.292900458861405 0.00444367909133123 0.0523378944190322 0.10136767885538 -0.000102402104046328 -0.00015819354759472 3.46099261749888e-05 -0.000111332236533979 0.199961507497716 -4.31135515083225 9.12563982713443e-05 -0.00747888871666101 -0.000200208332551408 -0.00329858683163069 3.70153573556186e-05 0.101367863431133 0.199961536713431 4.31136289948541 0.000223117106759293
146 0.288 0.658330167277103 0.55978294103364 -0.292654830983206 -0.29290039004197 0.00444344962665494 0.0527378175080586 0.0929135479709463 -0.000102219814723803 -0.00017189388405725 3.4209861762835e-05 -0.00011726118724284 0.199961581888149 -4.14133516891956 9.10330075210019e-05 -0.00516546321341348 -0.00019985596164118 -0.0019710992612415 3.73749165297199e-05 0.0929137809705469 0.199961610941741 4.14133885942367 0.000222769607997687
147 0.29 0.658507710330203 0.559782736776076 -0.292655186894019 -0.292900322021958 0.00444321004658225 0.0531377407465848 0.0848023381797013 -0.000102037972016244 -0.000178855400448374 3.38105023284241e-05 -0.000119216633578945 0.199961656997382 -3.96855250228006 9.08098596319461e-05 -0.00110280999957024 -0.000199503375625243 0.000437273408454563 3.77341738619363e-05 0.08480261058838 0.199961685890164 3.96855267959885 0.000222422785184619
148 0.292 0.658669376629822 0.559782532881752 -0.292655546404808 -0.29290025479996 0.00444297276012062 0.0535376641360481 0.0770393379618261 -0.000101856575285275 -0.000176305124055531 3.3411848260334e-05 -0.000115512093609021 0.199961732824844 -3.79323007748677 9.05870517486917e-05 0.00311144602443968 -0.000199150598789721 0.00291497610424573 3.80931228366465e-05 0.0770396262980098 0.199961761558124 3.79323247362093 0.000222076700602005
149 0.294 0.658815867682051 0.559782329349775 -0.292655892114515 -0.292900188374565 0.00444274799820782 0.0539375876778842 0.0696294178697542 -0.00010167562380925 -0.000166409616350616 3.30138999332652e-05 -0.000107556729161962 0.199961809369873 -3.61557744982948 9.03645006045117e-05 0.00616594225330557 -0.000198797592970701 0.00464983206018703 3.84517469947942e-05 0.0696296997946369 0.199961837944953 3.61558569743514 0.000221731285089405
150 0.296 0.658947894301301 0.559782126179256 -0.292656212043273 -0.292900122744361 0.00444254253320397 0.0543375113735276 0.0625770281625082 -0.000101495117282857 -0.000151641355042309 3.26166578884512e-05 -9.69127653682732e-05 0.199961886631832 -3.43579736439281 9.01421784438305e-05 0.00809787469718824 -0.000198444326943159 0.00568232356220471 3.88100545659075e-05 0.0625772869405185 0.199961915050009 3.43581160623574 0.000221386502673337
151 0.298 0.659066175794701 0.559781923369306 -0.292656498679935 -0.292900057907934 0.00444236034714635 0.0547374352244115 0.055886228412183 -0.000101315055095474 -0.000134018117561863 3.22201226254925e-05 -8.48274349131427e-05 0.199961964610092 -3.25407695360435 8.99201407777993e-05 0.00912359962926266 -0.000198090821523777 0.00616046968906352 3.91680455430476e-05 0.0558864534810381 0.199961992872656 3.25409557503094 0.000221042396569361
152 0.3 0.65917143921495 0.559781720919036 -0.292656748115743 -0.29289999386387 0.00444220322346432 0.055137359231968 0.0495607203480907 -0.000101135436719746 -0.000115146956525258 3.18242946023561e-05 -7.22708866120191e-05 0.199962043304014 -3.07058759879685 8.96983459730548e-05 0.00943726555582834 -0.00019773708365145 0.00621366078902562 3.95256978188984e-05 0.0495609068049032 0.199962071412253 3.07060838816131 0.00022069895402868
153 0.302 0.659264418676093 0.559781518827559 -0.292656959267761 -0.292899930610755 0.0044420712635999 0.0555372833976276 0.0436038780169956 -0.000100956261711582 -9.62690553385492e-05 3.14291742908867e-05 -5.99727917570402e-05 0.199962122712883 -2.88548622605355 8.94768148462787e-05 0.00921074156529087 -0.00019738306475392 0.00595352606276577 3.98830014153306e-05 0.0436040255319139 0.199962150668075 2.88550706860641 0.000220356140029228
154 0.304 0.659345854727018 0.559781317093989 -0.292657133191965 -0.292899868147173 0.00444196333229729 0.0559372077228195 0.0380187754438765 -0.000100777529460361 -7.83039902640947e-05 3.10347623433404e-05 -4.8456782360956e-05 0.19996220283602 -2.69891650991893 8.92555543363648e-05 0.0085941273056389 -0.000197028740545058 0.00547511430377261 4.0239974977152e-05 0.0380188869619635 0.19996223063944 2.69893574644039 0.000220013940846541
155 0.306 0.659416493777869 0.559781115717441 -0.292657272483722 -0.292899806471706 0.00444187743647045 0.0563371322089717 0.0328082119773198 -0.000100599239494237 -6.18925461159935e-05 3.06410593287065e-05 -3.80723345419498e-05 0.199962283672783 -2.51100998653608 8.90345366877376e-05 0.00771658791379191 -0.000196674138780439 0.00485819388797853 4.0596608540111e-05 0.0328082924477742 0.199962311325699 2.51102654312152 0.000219672370163356
156 0.308 0.659477087574927 0.559780914697031 -0.292657380762149 -0.292899745582936 0.00444181104295913 0.0567370568575106 0.0279747354977322 -0.00010042139131361 -4.7437638608927e-05 3.02480657882187e-05 -2.90240068090419e-05 0.199962365222454 -2.3218870795344 8.88137341448213e-05 0.00668735189446322 -0.000196319252521171 0.00416855671769161 4.09528700048844e-05 0.0279747907747423 0.199962392726131 2.3219004517096 0.000219331406426109
157 0.31 0.65952839271986 0.559780714031876 -0.292657462234277 -0.292899685479443 0.00444176134044322 0.0571369816698615 0.0235206636591822 -0.000100243984557657 -3.51431385381406e-05 2.98557823186218e-05 -2.13981076711833e-05 0.199962447484263 -2.13165804343468 8.85931952798734e-05 0.00559678021289089 -0.000195964054011677 0.00345926595441553 4.13087728051708e-05 0.0235206996470678 0.199962474839958 2.13166819758832 0.000218991048733181
158 0.312 0.659571170229564 0.559780513721093 -0.292657521334703 -0.292899626159806 0.00444172545052844 0.0575369066474477 0.0194481033239935 -0.00010006701853249 -2.50505177573634e-05 2.9464209572172e-05 -1.51869429913798e-05 0.199962530457545 -1.94042382944959 8.83729617262573e-05 0.00451746504440131 -0.000195608518965828 0.00277182454593016 4.16643160944252e-05 0.019448125387101 0.199962557666511 1.94043106767479 0.000218651293826246
159 0.314 0.659606185133156 0.559780313763802 -0.292657562436348 -0.292899567622604 0.00444170059267125 0.0579368317916917 0.0157589683413839 -9.98904927107524e-05 -1.70732783605354e-05 2.90733482427585e-05 -1.03108094874626e-05 0.199962614141527 -1.74827687830781 8.81529155227766e-05 0.00350534936494062 -0.000195252661261413 0.00213726428915928 4.20194768771531e-05 0.0157589809630688 0.19996264120501 1.74828169886849 0.000218312103837281
160 0.316 0.659634206102929 0.559780114159122 -0.292657589627817 -0.292899509866413 0.00444168420729049 0.0583367571040138 0.0124549958107622 -9.97144068703991e-05 -1.10291202976009e-05 2.86831989271263e-05 -6.63788583474267e-06 0.199962698535453 -1.55530184532681 8.7933077486113e-05 0.00260087700681976 -0.000194896467020643 0.0015771675406645 4.23742776978208e-05 0.0124550024628311 0.199962725454694 1.55530481967222 0.000217973480918481
161 0.318 0.659656005116399 0.559779914906174 -0.292657606552829 -0.292899452889809 0.00444167404112791 0.0587366825858335 0.00953776096007663 -9.95387604008079e-05 -6.66977033325632e-06 2.82937623746759e-05 -4.00213932480464e-06 0.199962783638638 -1.36157626250133 8.77135308829934e-05 0.0018301916336616 -0.00019453990154905 0.00110463931231319 4.27287085921768e-05 0.00953776413183495 0.199962810414873 1.36157794063965 0.000217635427567828
162 0.32 0.65967235714677 0.55977971600408 -0.292657616306898 -0.292899396691364 0.00444166819873319 0.0591366082385684 0.00700869076075694 -9.93635527468672e-05 -3.70835376295453e-06 2.79050393209301e-05 -2.2193285854899e-06 0.199962869450287 -1.16717114195114 8.74942202022665e-05 0.00120640369222213 -0.000194182985663316 0.000725247538239936 4.30827266223454e-05 0.00700869209319589 0.199962896084747 1.1671719907526 0.000217297933315386
163 0.322 0.659684039879442 0.559779517451963 -0.292657621386244 -0.292899341269652 0.00444166516381357 0.0595365340636346 0.00486907639227207 -9.91887835199988e-05 -1.84415556436779e-06 2.75170304320227e-05 -1.10114917184489e-06 0.199962955969544 -0.972151525127638 8.72751246272473e-05 0.000730939860721368 -0.000193825702016204 0.000437947266125615 4.3436350870285e-05 0.00486907686602096 0.199962982463454 0.972151898562607 0.000216960979712257
164 0.324 0.659691833452339 0.559779319248946 -0.29265762368352 -0.292899286623242 0.00444166379413651 0.0599364600624465 0.00312008466024638 -9.90144522483582e-05 -7.84594320069053e-07 2.71297365128653e-05 -4.67539520987436e-07 0.199963043195691 -0.776576982282339 8.70562649746241e-05 0.000394983445256569 -0.000193468015913245 0.00023600066258872 4.37896021526773e-05 0.00312008479392567 0.19996306955027 0.776577118590922 0.000216624550107852
165 0.326 0.659696520218083 0.559779121394154 -0.292657624524621 -0.292899232750705 0.00444166329365549 0.0603363862364174 0.00176276846314271 -9.88405584601003e-05 -2.64221783341511e-07 2.67431583683697e-05 -1.57146521490015e-07 0.199963131127953 -0.580502066020726 8.68376343055032e-05 0.000181006279409423 -0.000193109930823887 0.00010790048542153 4.41424353667119e-05 0.00176276848994946 0.199963157344415 0.580502104268468 0.000216288637507122
166 0.328 0.659698884526191 0.559778923886713 -0.292657624740408 -0.292899179650609 0.00444166316555042 0.0607363125869583 0.000798076396163471 -9.86671017111362e-05 -6.05692024313597e-08 2.63572967895697e-05 -3.5937579301315e-08 0.199963219765432 -0.38397672320195 8.66192256809838e-05 6.43856704063416e-05 -0.000192751446748129 3.83010342192013e-05 4.44948587488558e-05 0.000798076399271029 0.199963245844987 0.383976730510315 0.000215953242476585
167 0.33 0.659699712523667 0.559778726725747 -0.292657624766898 -0.292899127321518 0.00444166314990517 0.0611362391154791 0.000226861570334913 -9.84940815573764e-05 -6.67910171614494e-09 2.59721525813772e-05 -3.94238461320917e-09 0.199963309107388 -0.194553548701903 8.64010599177511e-05 1.51281660809577e-05 -0.000192392563685972 8.97662673360332e-06 4.48468822841774e-05 0.000226861570467489 0.199963335051238 0.194553549497163 0.000215618377155526
168 0.332 0.659699791972473 0.559778529910386 -0.292657624767124 -0.292899075761998 0.00444166314978088 0.0615361658233879 1.9862201355858e-05 -9.83214974714652e-05 -5.6538107529036e-11 2.55877265348259e-05 -3.10723669016965e-11 0.199963399152961 -0.0567153925837282 8.61831161991233e-05 1.66977542903623e-06 -0.000192033233065158 9.85596153302291e-07 4.51984625976509e-05 1.98622013559628e-05 0.199963424962305 0.0567153926168722 0.00021528398254501
169 0.334 0.659699791972473 0.559778333439758 -0.292657624767124 -0.292899024970612 0.00444166314978088 0.061936092712091 0 -9.81493490925799e-05 0 2.52040196491165e-05 0 0.199963489901238 -0.009931100677929 8.59653806473125e-05 2.8269053764518e-08 -0.000191673447946794 1.55361834508483e-08 4.55496257031895e-05 0 0.199963515577267 0.00993110067798139 0.000214950054011043
170 0.336 0.55977813731299 -0.29289897494592 0.0623360197829929 -9.79776359488759e-05 2.48210327430387e-05 0.199963581351464 8.57478879567885e-05 -0.000191313225678113 4.59003733424556e-05 0.199963606895366 0.000214616623031375
171 0.338 0.559777941529214 -0.292898925686481 0.0627359470374968 -9.78063575407528e-05 2.44387667464041e-05 0.199963673502732 8.55306173108693e-05 -0.000190952552381328 4.62506621543013e-05 0.199963698915688 0.000214283661318901
172 0.34 0.55977774608756 -0.292898877190853 0.0631358744770038 -9.76355134796324e-05 2.40572225335134e-05 0.199963766354113 8.53135340150856e-05 -0.000190591424586994 4.66005155505544e-05 0.1999637916373 0.000213951158589573
173 0.342 0.55977755098716 -0.292898829457591 0.0635358021029133 -9.74651034046924e-05 2.36764010480561e-05 0.199963859904794 8.5096658886119e-05 -0.00019022978331451 4.69499335242762e-05 0.199963885059384 0.000213619072349358
174 0.344 0.559777356227146 -0.292898782485249 0.063935729916623 -9.72951268440879e-05 2.32963034002553e-05 0.199963954153847 8.4880026618439e-05 -0.000189867645911112 4.72988896313419e-05 0.199963979181005 0.000213287427765755
175 0.346 0.559777161806652 -0.292898736272377 0.0643356579195287 -9.71255832982187e-05 2.29169304644117e-05 0.199964049100352 8.46636233342578e-05 -0.000189505026254588 4.76473816998779e-05 0.199964074001239 0.000212956232767888
176 0.348 0.559776967724813 -0.292898690817527 0.0647355861130244 -9.69564723507509e-05 2.2538283295237e-05 0.199964144743374 8.44474351557877e-05 -0.000189141889650468 4.79954079951605e-05 0.199964169519143 0.000212625452177209
177 0.35 0.559776773980763 -0.292898646119244 0.0651355144985022 -9.67877935575955e-05 2.21603629058098e-05 0.199964241081984 8.42314135107713e-05 -0.000188778232629305 4.83429737213603e-05 0.199964265733787 0.00021229506646385
178 0.352 0.559776580573639 -0.292898602176075 0.0655354430773523 -9.66195466967078e-05 2.17831703647198e-05 0.199964338115269 8.40156000325719e-05 -0.000188414027435524 4.86900650006894e-05 0.199964362644249 0.000211965066020509
179 0.354 0.559776387502576 -0.292898558986563 0.0659353718509632 -9.64517311574652e-05 2.14067067960677e-05 0.199964435842244 8.3800050232341e-05 -0.000188049274069124 4.90366670879982e-05 0.199964460249542 0.000211635471072234
180 0.356 0.559776194766714 -0.292898516549248 0.0663353008207213 -9.62843464957785e-05 2.10309732684433e-05 0.199964534261937 8.35846530877759e-05 -0.000187683969060658 4.93827851874573e-05 0.199964558548685 0.000211306237359517
181 0.358 0.55977600236519 -0.29289847486267 0.066735229988011 -9.61173925451141e-05 2.06559709198251e-05 0.199964633373385 8.33694710489218e-05 -0.000187318095062893 4.97284071560022e-05 0.199964657540713 0.000210977373002986
182 0.36 0.559775810297144 -0.292898433925364 0.0671351593542148 -9.59508686115828e-05 2.02817008881917e-05 0.199964733175566 8.31545388102483e-05 -0.000186951659014722 5.00735321262713e-05 0.199964757224596 0.000210648899243986
183 0.362 0.559775618561716 -0.292898393735866 0.0675350889207132 -9.57847743898731e-05 1.99081642837662e-05 0.199964833667514 8.29397384105589e-05 -0.000186584626221675 5.04181765781375e-05 0.199964857599365 0.000210320744291566
184 0.364 0.559775427158046 -0.292898354292707 0.0679350186888849 -9.56191096579405e-05 1.9535362383305e-05 0.199964934848272 8.27251531165806e-05 -0.00018621697586707 5.07622980108757e-05 0.199964958664057 0.000209992914067556
185 0.366 0.559775236085277 -0.292898315594417 0.0683349486601063 -9.54538737774068e-05 1.91632963802979e-05 0.199965036716706 8.25108106838889e-05 -0.000185848735706484 5.11058799446129e-05 0.199965060417533 0.000209665441616696
186 0.368 0.559775045342551 -0.292898277639522 0.0687348788357517 -9.5289066415205e-05 1.8791967440479e-05 0.199965139271792 8.22966417235448e-05 -0.000185479871045446 5.14489596759037e-05 0.199965162858762 0.00020933827947545
187 0.37 0.559774854929012 -0.292898240426547 0.0691348092171935 -9.51246872105126e-05 1.84213768961161e-05 0.199965242512544 8.20826878689118e-05 -0.000185110357597828 5.17915189901518e-05 0.199965265986756 0.000209011419728895
188 0.372 0.559774664843802 -0.292898203954014 0.0695347398058019 -9.49607356637293e-05 1.80515260100877e-05 0.199965346437868 8.18689074866263e-05 -0.000184740216180312 5.21335448769311e-05 0.199965369800412 0.000208684862864649
189 0.374 0.559774475086069 -0.292898168220443 0.069934670602945 -9.47972115805661e-05 1.76824160313948e-05 0.199965451046724 8.16553005766884e-05 -0.000184369425976216 5.24750338667945e-05 0.199965474298687 0.000208358591198899
190 0.376 0.559774285654956 -0.29289813322435 0.0703346016099888 -9.46341144614226e-05 1.73140483061829e-05 0.199965556338003 8.1441950405825e-05 -0.00018399796269941 5.28159755514012e-05 0.199965579480467 0.00020803261483932
191 0.378 0.559774096549611 -0.29289809896425 0.070734532828297 -9.44714437789428e-05 1.69464241805972e-05 0.199965662310626 8.12287598295213e-05 -0.000183625833288791 5.31563699307513e-05 0.199965685344667 0.000207706903444878
192 0.38 0.559773907769181 -0.292898065438653 0.0711344642592313 -9.43091994221045e-05 1.65795449730277e-05 0.199965768963483 8.10157288477775e-05 -0.000183253003049888 5.34962048617804e-05 0.199965791890172 0.00020738142487251
193 0.382 0.559773719312813 -0.29289803264607 0.0715343959041509 -9.41473808635517e-05 1.62134121683977e-05 0.199965876295446 8.08029615440019e-05 -0.000182879475452147 5.38354864160206e-05 0.199965899115848 0.00020705622601985
194 0.384 0.559773531179658 -0.292898000585005 0.0719343277644131 -9.39859875759285e-05 1.58480270712191e-05 0.199965984305429 8.0590367712574e-05 -0.000182505281720591 5.41742137261103e-05 0.199966007020605 0.000206731300621851
195 0.386 0.559773343368863 -0.292897969253961 0.0723342598413726 -9.38250193927014e-05 1.54833910415153e-05 0.199966092992301 8.03779057201303e-05 -0.000182130335119046 5.45123685774528e-05 0.199966115603307 0.000206406552770144
196 0.388 0.55977315587958 -0.29289793865144 0.0727341921363823 -9.3664475953048e-05 1.51195057307429e-05 0.199966202354903 8.01656727111854e-05 -0.000181754642586407 5.48499457658779e-05 0.199966224862789 0.000206082026711378
197 0.39 0.559772968710959 -0.292897908775939 0.0731341246507922 -9.35043567018567e-05 1.47563724711697e-05 0.199966312392084 7.99536617468454e-05 -0.000181378249225483 5.51869348830447e-05 0.199966334797894 0.000205757758299938
198 0.392 0.559772781862153 -0.292897879625951 0.0735340573859506 -9.33446613060606e-05 1.4393992733841e-05 0.199966423102642 7.97418103770652e-05 -0.000181001089116783 5.55233333268678e-05 0.199966445407418 0.000205433666002921
199 0.394 0.559772595332314 -0.292897851199968 0.0739339903432028 -9.31853894603484e-05 1.40323681147025e-05 0.199966534485417 7.95301255407387e-05 -0.000180623165729754 5.58591402299857e-05 0.199966556690192 0.000205109756993657
200 0.396 0.559772409120595 -0.292897823496478 0.0743339235238923 -9.30265408038976e-05 1.3671500070922e-05 0.199966646539203 7.93186488712293e-05 -0.000180244475594948 5.61943477861426e-05 0.199966668645007 0.000204786043871073
201 0.398 0.559772223226151 -0.292897796513967 0.0747338569293596 -9.28681148648635e-05 1.33113902123227e-05 0.199966759262808 7.91073734296432e-05 -0.000179864997895684 5.65289638015942e-05 0.199966781270664 0.000204462509393369
202 0.4 0.559772037648136 -0.292897770250917 0.0751337905609435 -9.27101113101791e-05 1.29520400793392e-05 0.199966872655058 7.88962506437229e-05 -0.000179484749979197 5.68629770006379e-05 0.199966894565987 0.000204139148607285
203 0.402 0.559771852385706 -0.292897744705807 0.0755337244199799 -9.25525298622886e-05 1.25934512124059e-05 0.199966986714716 7.86853429635136e-05 -0.000179103683273229 5.71963683013154e-05 0.19996700852973 0.00020381593928391
204 0.404 0.559771667438016 -0.292897719877112 0.0759336585078024 -9.2395369938325e-05 1.22356253462463e-05 0.199967101440532 7.84746434501215e-05 -0.000178721780430546 5.7529127295286e-05 0.199967123160641 0.000203492862165348
205 0.406 0.559771482804226 -0.292897695763306 0.076333592825742 -9.22386312884881e-05 1.18785640906838e-05 0.199967216831225 7.82640688368196e-05 -0.00017833907267617 5.78612583193582e-05 0.199967238457432 0.00020316991541119
206 0.408 0.559771298483491 -0.292897672362856 0.0767335273751273 -9.20823136629777e-05 1.15222690555416e-05 0.199967332885565 7.80536885125471e-05 -0.000177955528785079 5.81927700471496e-05 0.199967354418869 0.000202847102521458
207 0.41 0.559771114474971 -0.292897649674229 0.0771334621572843 -9.19264165344379e-05 1.11667419755434e-05 0.199967449602305 7.78435371717733e-05 -0.000177571152226719 5.8523659009213e-05 0.199967471043699 0.000202524440614866
208 0.412 0.559770930777825 -0.292897627695888 0.0775333971735365 -9.17709395142906e-05 1.08119844466348e-05 0.199967566980201 7.76335384866655e-05 -0.000177185911776067 5.88538991846965e-05 0.199967588330673 0.000202201867150428
209 0.414 0.559770747391213 -0.292897606426292 0.0779333324252051 -9.16158823804913e-05 1.04579983284392e-05 0.199967685017902 7.74237132739052e-05 -0.000176799783146996 5.91834740937269e-05 0.199967706278435 0.00020187936572059
210 0.416 0.559770564314296 -0.292897585863895 0.0783332679136081 -9.1461244661195e-05 1.01047853140468e-05 0.199967803714097 7.72141239835377e-05 -0.000176412811442317 5.9512404552986e-05 0.199967824885669 0.000201557007516995
211 0.418 0.559770381546234 -0.29289756600715 0.0787332036400614 -9.13070258845571e-05 9.75234708266991e-06 0.19996792306752 7.700469428773e-05 -0.000176024934211982 5.9840686225665e-05 0.199967944151104 0.000201234709070374
212 0.42 0.559770199086192 -0.292897546854506 0.0791331396058782 -9.11532258840441e-05 9.40068557719886e-06 0.199968043076842 7.67954033698003e-05 -0.000175636141047652 6.0168306101338e-05 0.199968064073405 0.000200912451281511
213 0.422 0.559770016933331 -0.292897528404408 0.0795330758123688 -9.09998442710779e-05 9.0498025184793e-06 0.199968163740745 7.65863206186878e-05 -0.000175246459704903 6.04952485674936e-05 0.199968184651249 0.000200590282028451
214 0.424 0.559769835086815 -0.292897510655296 0.0799330122608412 -9.08468806015693e-05 8.69969973837924e-06 0.199968285057837 7.63774460343924e-05 -0.000174855841611476 6.08215049505145e-05 0.199968305883239 0.000200268157910436
215 0.426 0.559769653545809 -0.292897493605609 0.0803329489526002 -9.06943344869403e-05 8.3503791520334e-06 0.199968407026765 7.61687588002324e-05 -0.00017446430064516 6.11471030059762e-05 0.199968427768018 0.000199946093292158
216 0.428 0.559769472309477 -0.29289747725378 0.0807328858889482 -9.05422055663684e-05 8.0018425357986e-06 0.199968529646249 7.59602380995261e-05 -0.000174071840275403 6.1472012376218e-05 0.199968550304299 0.000199624075839023
217 0.43 0.559769291376986 -0.292897461598239 0.0811328230711852 -9.03904935345422e-05 7.65409179093179e-06 0.199968652914814 7.57518908711673e-05 -0.000173678401521604 6.17962096424728e-05 0.199968673490604 0.000199302051298609
218 0.432 0.559769110747503 -0.292897446637413 0.0815327605006075 -9.02391980028837e-05 7.30712892971219e-06 0.199968776831087 7.55437379318379e-05 -0.000173283994792106 6.21197390401895e-05 0.199968797325553 0.000198980052191786
219 0.434 0.559768930420194 -0.292897432369723 0.0819326981785095 -9.00883185828149e-05 6.96095581176336e-06 0.19996890139377 7.53357515259622e-05 -0.000172888637434143 6.24425693443453e-05 0.199968921807844 0.000198658075290534
220 0.436 0.559768750394229 -0.292897418793589 0.0823326361061826 -8.99378549967799e-05 6.61557437997561e-06 0.199969026601365 7.51279594091158e-05 -0.000172492284344905 6.27646719320029e-05 0.199969046935972 0.000198336084680104
221 0.438 0.559768570668774 -0.292897405907426 0.082732574284915 -8.97878067451784e-05 6.27098667438374e-06 0.199969152452458 7.49203823979804e-05 -0.000172094935524391 6.30860728240145e-05 0.19996917270852 0.000198014098276261
222 0.44 0.559768391243002 -0.292897393709643 0.0831325127159924 -8.9638173467188e-05 5.92719463787805e-06 0.199969278945656 7.47129580425109e-05 -0.000171696590972603 6.34067650814862e-05 0.199969299124089 0.000197692092176632
223 0.442 0.55976821211608 -0.292897382198647 0.0835324514006976 -8.94889549130084e-05 5.58420031049333e-06 0.199969406079518 7.45057210371768e-05 -0.000171297212525623 6.37267330919066e-05 0.199969426181233 0.000197370043311757
224 0.444 0.559768033287182 -0.292897371372841 0.0839323903403105 -8.93401505830393e-05 5.24200578777556e-06 0.199969533852588 7.42986921986599e-05 -0.000170896810591791 6.40459707837437e-05 0.199969553878491 0.000197047968541952
225 0.446 0.559767854755478 -0.292897361230624 0.0843323295361079 -8.91917601442137e-05 4.90061306812617e-06 0.199969662263401 7.40918090769149e-05 -0.000170495395579451 6.436446948338e-05 0.199969682214392 0.000196725852439277
226 0.448 0.559767676520141 -0.292897351770389 0.0847322689893641 -8.90437833467316e-05 4.56002420545775e-06 0.199969791310466 7.38851202441992e-05 -0.000170092929324683 6.46822300581772e-05 0.19996981118744 0.00019640368246306
227 0.45 0.559767498580345 -0.292897342990527 0.0851322087013498 -8.88962196632369e-05 4.22024135082743e-06 0.199969920992322 7.36786395783006e-05 -0.000169689397949701 6.49992611817529e-05 0.19996994079617 0.000196081456698013
228 0.452 0.559767320935263 -0.292897334889424 0.0855321486733334 -8.87490687884184e-05 3.88126661365895e-06 0.199970051307511 7.34723254458557e-05 -0.000169284794515611 6.53155472415956e-05 0.199970071039118 0.00019575915041725
229 0.454 0.55976714358407 -0.292897327465461 0.0859320889065799 -8.86023303614535e-05 3.54310217276499e-06 0.199970182254511 7.32662264191219e-05 -0.000168879115552967 6.56310656863001e-05 0.199970201914757 0.00019543677337382
230 0.456 0.559766966525941 -0.292897320717015 0.0863320294023514 -8.84560038827419e-05 3.20575015144708e-06 0.199970313831774 7.30602939258417e-05 -0.000168472361061766 6.59458234547605e-05 0.199970333421534 0.000195114311677496
231 0.458 0.559766789760054 -0.29289731464246 0.086731970161907 -8.83100891857501e-05 2.86921272851792e-06 0.199970446037804 7.28545349049092e-05 -0.000168064492878095 6.62598370268496e-05 0.199970465557949 0.000194791742703346
232 0.46 0.559766613285585 -0.292897309240164 0.0871319111865026 -8.81645857431223e-05 2.5334921799347e-06 0.199970578871122 7.26489979285815e-05 -0.000167655517940845 6.65730760449068e-05 0.199970598322514 0.000194469082504446
233 0.462 0.559766437101711 -0.292897304508491 0.0875318524773914 -8.80194931940358e-05 2.19859065675454e-06 0.199970712330109 7.24436205468137e-05 -0.000167245432780571 6.68855240290588e-05 0.199970731713609 0.000194146301197147
234 0.464 0.559766261207612 -0.292897300445802 0.0879317940358231 -8.7874811260935e-05 1.86451044881242e-06 0.199970846413218 7.22384305151812e-05 -0.000166834216580591 6.71972043980728e-05 0.19997086572968 0.000193823401436134
235 0.466 0.559766085602466 -0.29289729705045 0.0883317358630443 -8.77305394719751e-05 1.53125379043217e-06 0.199970981118926 7.20334625281537e-05 -0.000166421858932564 6.75081136825017e-05 0.199971000369199 0.000193500388287297
236 0.468 0.559765910285454 -0.292897294320786 0.0887316779602988 -8.75866774108224e-05 1.19882301308216e-06 0.199971116445673 7.18286749523677e-05 -0.000166008339019807 6.78182275962169e-05 0.1999711356306 0.000193177222166125
237 0.47 0.559765735255756 -0.292897292255158 0.089131620328827 -8.74432247721656e-05 8.67220434352944e-07 0.199971252391837 7.16240539100354e-05 -0.000165593681128451 6.81275426697713e-05 0.199971271512258 0.000192853919841937
238 0.472 0.559765560512555 -0.292897290851905 0.0895315629698661 -8.73001811951823e-05 5.36448288568358e-07 0.199971388955843 7.14196479734141e-05 -0.00016517784362513 6.84360623726121e-05 0.199971408012592 0.00019253046713277
239 0.474 0.559765386055032 -0.292897290109364 0.0899315058846504 -8.7157546180272e-05 2.06509059852422e-07 0.199971526136086 7.12154363258221e-05 -0.000164760819570952 6.8743773694313e-05 0.199971545129991 0.000192206848105118
240 0.476 0.55976521188237 -0.292897290025868 0.0903314490744105 -8.7015319449879e-05 -1.22594989715452e-07 0.199971663930938 7.10113842727899e-05 -0.000164342626313152 6.9050683573768e-05 0.199971682862822 0.000191883069659224
241 0.478 0.559765037993754 -0.292897290599744 0.0907313925403741 -8.68735006431808e-05 -4.50861445400185e-07 0.19997180233882 7.08075612032565e-05 -0.000163923215279471 6.93567668574868e-05 0.199971821209501 0.00019155910925883
242 0.48 0.559764864388367 -0.292897291829314 0.0911313362837657 -8.6732089205066e-05 -7.78287850833336e-07 0.199971941358005 7.06039463005403e-05 -0.000163502603817145 6.966203395381e-05 0.199971960168296 0.000191234980227932
243 0.482 0.559764691065397 -0.292897293712896 0.0915312803058062 -8.65910848579786e-05 -1.10487186066876e-06 0.199972080986956 7.04005048701716e-05 -0.000163080767640044 6.996651088359e-05 0.199972099737665 0.000190910661057115
244 0.484 0.559764518024028 -0.292897296248802 0.0919312246077136 -8.64504871855853e-05 -1.43061092139351e-06 0.199972221224049 7.01972646677262e-05 -0.000162657692870382 7.02701377988667e-05 0.199972239915978 0.000190586130877927
245 0.486 0.559764345263448 -0.292897299435339 0.0923311691907023 -8.63102957993077e-05 -1.75550263215029e-06 0.199972362067507 6.99942118154161e-05 -0.000162233382977605 7.0572919036449e-05 0.199972380701454 0.000190261391620436
246 0.488 0.559764172782845 -0.292897303270812 0.0927311140559836 -8.61705103383236e-05 -2.07954445330394e-06 0.199972503515725 6.97913671299232e-05 -0.000161807813675585 7.08748745456566e-05 0.199972522092482 0.000189936440248308
247 0.49 0.559764000581407 -0.292897307753517 0.0931310592047652 -8.6031130330788e-05 -2.40273388685263e-06 0.199972645567006 6.95887167334596e-05 -0.000161381016189343 7.11759783056375e-05 0.199972664087359 0.00018961129125313
248 0.492 0.559763828658324 -0.292897312881748 0.0935310046382516 -8.58921554713898e-05 -2.72506851806131e-06 0.199972788219638 6.93862675649192e-05 -0.000160952952354964 7.14762433268178e-05 0.199972806684371 0.000189285922240626
249 0.494 0.559763657012785 -0.292897318653791 0.0939309503576438 -8.57535852605284e-05 -3.04654569627249e-06 0.199972931471979 6.91840404409837e-05 -0.000160523559722403 7.17756574661332e-05 0.199972949881867 0.000188960285992552
250 0.496 0.559763485643982 -0.29289732506793 0.0943308963641395 -8.56154193096258e-05 -3.36716275695092e-06 0.199973075322268 6.89819937279916e-05 -0.000160092890333376 7.20742162133025e-05 0.199973093678083 0.000188634412652477
251 0.498 0.559763314551108 -0.292897332122442 0.0947308426589329 -8.54776572856164e-05 -3.686917257606e-06 0.199973219768844 6.87801551821157e-05 -0.000159660954596202 7.23719147111011e-05 0.199973238071352 0.000188308322196331
252 0.5 0.559763143733353 -0.2928973398156 0.0951307892432149 -8.53402986888974e-05 -4.00580657533572e-06 0.199973364809927 6.85785386814401e-05 -0.000159227690060815 7.26687323163176e-05 0.199973383059889 0.000187981961651232
253 0.502 0.559762973189913 -0.292897348145669 0.0955307361181726 -8.52033431308906e-05 -4.32382801784925e-06 0.199973510443773 6.83771164691965e-05 -0.00015879310713561 7.29646865496591e-05 0.199973528641945 0.000187655339422339
254 0.504 0.559762802919981 -0.292897357110912 0.09593068328499 -8.50667902230206e-05 -4.64097900387816e-06 0.199973656668673 6.81758885456851e-05 -0.000158357205820581 7.32597697783443e-05 0.199973674815806 0.000187328455612786
255 0.506 0.559762632922752 -0.292897366709585 0.0963306307448473 -8.49306395767079e-05 -4.95725684113157e-06 0.199973803482852 6.79748757281828e-05 -0.000157919951421226 7.35539745430613e-05 0.199973821579692 0.000187001288653917
256 0.508 0.559762463197423 -0.292897376939939 0.0967305784989214 -8.47948907201078e-05 -5.27265880956306e-06 0.199973950884571 6.77740918941793e-05 -0.000157481350876454 7.38472937314438e-05 0.199973968931857 0.000186673849795335
257 0.51 0.559762293743189 -0.29289738780022 0.0971305265483856 -8.46595432091312e-05 -5.58718224463738e-06 0.199974098872027 6.75735023492052e-05 -0.000157041411125158 7.41397169351509e-05 0.199974116870494 0.000186346131312521
258 0.512 0.55976212455925 -0.292897399288668 0.0975304748944095 -8.4524596710711e-05 -5.9008244540637e-06 0.199974247443439 6.73731070932603e-05 -0.000156600100942316 7.44312346132036e-05 0.199974265393818 0.00018601810627084
259 0.514 0.559761955644802 -0.292897411403518 0.0979304235381593 -8.43900507807581e-05 -6.21358264840665e-06 0.199974396596966 6.7172961637496e-05 -0.000156157406450141 7.47218606433896e-05 0.19997441449998 0.000185689791917588
260 0.516 0.559761786999047 -0.292897424142999 0.0983303724807974 -8.4255904864161e-05 -6.52545407986426e-06 0.199974546330882 6.69730382263367e-05 -0.000155713331118079 7.50116054340499e-05 0.199974564187251 0.000185361188728786
261 0.518 0.559761618621183 -0.292897437505334 0.0987303217234828 -8.41221586278528e-05 -6.83643597287897e-06 0.199974696643387 6.67732952264188e-05 -0.000155267868007236 7.53004290865444e-05 0.199974714453826 0.000185032263163819
262 0.52 0.559761450510412 -0.292897451488742 0.0991302712673709 -8.39888116832554e-05 -7.14652555189321e-06 0.199974847532598 6.65737742711024e-05 -0.00015482099630093 7.55883359376818e-05 0.199974865297815 0.00018470301796706
263 0.522 0.559761282665936 -0.292897466091436 0.0995302211136132 -8.38558635307684e-05 -7.45571995808269e-06 0.199974998996731 6.63744822992883e-05 -0.000154372712529715 7.58753355284413e-05 0.199975016717429 0.000184373460172103
264 0.524 0.559761115086958 -0.292897481311622 0.0999301712633578 -8.37233137540582e-05 -7.76401640201207e-06 0.19997515103394 6.61754123720825e-05 -0.00015392300628525 7.61613931643534e-05 0.199975168710819 0.0001840435678725
265 0.526 0.559760947772681 -0.292897497147502 0.100330121717749 -8.35911618812801e-05 -8.07141198322369e-06 0.199975303642304 6.59765506116904e-05 -0.000153471853281406 7.64465279273762e-05 0.199975321276055 0.000183713327258524
266 0.528 0.55976078072231 -0.29289751359727 0.100730072477927 -8.34594075516115e-05 -8.37790381513769e-06 0.199975456820052 6.5777931712585e-05 -0.000153019288212652 7.67307545626594e-05 0.199975474411365 0.000183382789708433
267 0.53 0.559760613935051 -0.292897530659117 0.101130023545029 -8.33280501544297e-05 -8.6834891360743e-06 0.199975610565322 6.55795487358723e-05 -0.000152565279853966 7.70140323042012e-05 0.199975628114879 0.000183051913404565
268 0.532 0.55976044741011 -0.292897548331227 0.101529974920188 -8.3197089356668e-05 -8.98816493455356e-06 0.199975764876181 6.53813392315072e-05 -0.000152109786571985 7.72963741624277e-05 0.199975782384659 0.000182720650582627
269 0.534 0.559760281146694 -0.292897566611777 0.101929926604534 -8.30665247975037e-05 -9.29192828236224e-06 0.199975919750819 6.51833795273226e-05 -0.000151652836122285 7.75777792699772e-05 0.19997593721889 0.00018238905533775
270 0.536 0.559760115144011 -0.29289758549894 0.102329878599192 -8.29363558385587e-05 -9.5947762790427e-06 0.199976075187298 6.49856904400003e-05 -0.000151194414627076 7.78582207386357e-05 0.199976092615629 0.000182057116073429
271 0.538 0.55975994940127 -0.292897604990882 0.102729830905283 -8.28065820357437e-05 -9.89670594087055e-06 0.199976231183702 6.47881956417073e-05 -0.000150734515147466 7.81377081093825e-05 0.199976248572954 0.000181724807827211
272 0.54 0.559759783917682 -0.292897625085764 0.103129783523926 -8.26772030559918e-05 -1.01977143396326e-05 0.199976387738131 6.45909228880192e-05 -0.000150273113397325 7.84162561273671e-05 0.199976405088962 0.000181392130906179
273 0.542 0.559759618692458 -0.292897645781739 0.103529736456236 -8.25482183441916e-05 -1.04977983944598e-05 0.199976544848726 6.43939207511934e-05 -0.000149810195498867 7.86938431085459e-05 0.199976562161786 0.000181059086069471
274 0.544 0.559759453724809 -0.292897667076957 0.103929689703321 -8.24196273729871e-05 -1.0796955121628e-05 0.199976702513503 6.41971198422908e-05 -0.00014934578573822 7.89704465015139e-05 0.199976719789438 0.000180725663187219
275 0.546 0.559759289013948 -0.29289768896956 0.10432964326629 -8.22914298648225e-05 -1.10951815374127e-05 0.199976860730512 6.40005340390992e-05 -0.000148879870237595 7.92460966639318e-05 0.199976877969962 0.000180391873308423
276 0.548 0.55975912455909 -0.292897711457683 0.104729597146243 -8.21636252368307e-05 -1.13924746025784e-05 0.19997701949789 6.38042396694515e-05 -0.000148412414302523 7.95207823200971e-05 0.19997703670149 0.000180057714468725
277 0.55 0.559758960359447 -0.292897734539458 0.105129551344281 -8.20362129061446e-05 -1.16888311946228e-05 0.199977178813641 6.36081742833027e-05 -0.000147943417933005 7.9794469642902e-05 0.199977195982022 0.000179723154131422
278 0.552 0.559758796414238 -0.292897758213008 0.105529505861498 -8.19091925396975e-05 -1.19842482743104e-05 0.199977338675768 6.3412324002865e-05 -0.000147472891537381 8.00671820511133e-05 0.199977355809554 0.000179388210915452
279 0.554 0.559758632722677 -0.292897782476451 0.105929460698984 -8.17825636101332e-05 -1.22787227607723e-05 0.19997749908237 6.32167374003955e-05 -0.000147000786543394 8.03389160752842e-05 0.199977516182179 0.000179052865288659
280 0.556 0.559758469283984 -0.292897807327899 0.106329415857827 -8.16563255900959e-05 -1.2572251420484e-05 0.199977660031433 6.30214075370005e-05 -0.000146527123767725 8.06096422251156e-05 0.199977677097881 0.000178717123486386
281 0.558 0.559758306097375 -0.292897832765457 0.10672937133911 -8.15304779799852e-05 -1.28648312558432e-05 0.199977821520938 6.28263066571044e-05 -0.000146051930965951 8.08793865214596e-05 0.199977838554633 0.000178381014996392
282 0.56 0.559758143162072 -0.292897858787224 0.107129327143911 -8.14050203634675e-05 -1.31564591443478e-05 0.199977983548979 6.2631434760707e-05 -0.00014557515262692 8.11481359538901e-05 0.199978000550524 0.000178044493459716
283 0.562 0.559757980477294 -0.292897885391294 0.107529283273306 -8.12799522409424e-05 -1.34471318663509e-05 0.199978146113482 6.24368404200659e-05 -0.000145096771403397 8.1415880981428e-05 0.199978163083476 0.000177707562555206
284 0.564 0.559757818042263 -0.292897912575752 0.107929239728365 -8.11552730017872e-05 -1.37368462299614e-05 0.199978309212503 6.22425028184991e-05 -0.000144616794234276 8.16826294103289e-05 0.199978326151537 0.000177370229404753
285 0.566 0.559757655856202 -0.292897940338678 0.108329196510156 -8.10309822296684e-05 -1.4025599043288e-05 0.199978472844 6.20483942004312e-05 -0.000144135224589003 8.19483474134852e-05 0.199978489752663 0.000177032476777499
286 0.568 0.559757493918334 -0.292897968678148 0.108729153619741 -8.09070794249855e-05 -1.43133871283174e-05 0.199978637005892 6.18545492603317e-05 -0.000143652048589792 8.22130427971523e-05 0.199978653884766 0.000176694314379975
287 0.57 0.559757332227884 -0.292897997592227 0.10912911105818 -8.0783564032627e-05 -1.46002072376472e-05 0.199978801696171 6.16609679982005e-05 -0.000143167245419962 8.2476723367586e-05 0.199978818545832 0.000176355734335654
288 0.572 0.559757170784078 -0.292898027078977 0.109529068826526 -8.06604355529927e-05 -1.48860561099973e-05 0.199978966912786 6.14676573529315e-05 -0.000142680846304532 8.27394038699358e-05 0.199978983733805 0.000176016776914553
289 0.574 0.559757009586142 -0.292898057136451 0.109929026925831 -8.05376934032153e-05 -1.51709306228653e-05 0.199979132653787 6.12745965078431e-05 -0.000142192813079589 8.30010738958608e-05 0.199979149446731 0.000175677404741054
290 0.576 0.559756848633304 -0.292898087762699 0.110328985357141 -8.04153371669613e-05 -1.54548273623156e-05 0.199979298917081 6.10817646462535e-05 -0.000141703111050662 8.3261684005742e-05 0.199979315682511 0.000175337564934638
291 0.578 0.559756687924793 -0.292898118955761 0.110728944121499 -8.02933663446303e-05 -1.5737743067068e-05 0.199979465700523 6.08892242182079e-05 -0.000141211788790008 8.35212489447289e-05 0.199979482438994 0.000174997331249526
292 0.58 0.559756527459839 -0.292898150713672 0.111128903219943 -8.01717802700885e-05 -1.60196745174756e-05 0.199979633002077 6.06969752237063e-05 -0.000140718801194817 8.37797869274181e-05 0.199979649714139 0.000174656681832151
293 0.582 0.559756367237672 -0.292898183034459 0.111528862653507 -8.00505784437355e-05 -1.63006182718472e-05 0.19997980081967 6.05049690904912e-05 -0.000140224144795642 8.40372849433834e-05 0.199979817505868 0.00017431559691825
294 0.584 0.559756207257525 -0.292898215916145 0.111928822423222 -7.99297603937265e-05 -1.65805710966582e-05 0.199979969151217 6.03132266352446e-05 -0.000139727847348059 8.42937403905396e-05 0.19997998581209 0.000173974111007082
295 0.586 0.55975604751863 -0.292898249356743 0.112328782530112 -7.98093255371945e-05 -1.68595296612395e-05 0.199980137994632 6.01217756135419e-05 -0.000139229874157598 8.45491489320781e-05 0.199980154630714 0.00017363220998998
296 0.588 0.559755888020223 -0.292898283354263 0.1127287429752 -7.96892732912723e-05 -1.71374905932886e-05 0.199980307347813 5.99305743920197e-05 -0.000138730211346471 8.48034906186789e-05 0.199980323959632 0.000173289864990155
297 0.59 0.559755728761537 -0.292898317906706 0.113128703759503 -7.95696032396264e-05 -1.74144505066254e-05 0.199980477208594 5.97396368484659e-05 -0.000138228858914679 8.50567758586828e-05 0.199980493796675 0.000172947092392775
298 0.592 0.55975556974181 -0.292898353012065 0.113528664884035 -7.94503147438785e-05 -1.76904060289473e-05 0.199980647574916 5.95490115551378e-05 -0.000137725806453881 8.53090176625159e-05 0.199980664139776 0.000172603913730568
299 0.594 0.559755410960278 -0.29289838866833 0.113928626349803 -7.93314071934059e-05 -1.79653537324409e-05 0.199980818444665 5.93586707564597e-05 -0.000137221043555735 8.55601856725174e-05 0.199980834986816 0.000172260302916297
300 0.596 0.559755252416181 -0.29289842487348 0.114328588157813 -7.92128800608526e-05 -1.82392902031703e-05 0.199980989815659 5.9168586696856e-05 -0.000136714591036924 8.58102781539637e-05 0.199981006335608 0.000171916272909103
301 0.598 0.559755094108758 -0.292898461625491 0.114728550309066 -7.90947328466184e-05 -1.85122120965886e-05 0.199981161685778 5.89787871319025e-05 -0.000136206428080765 8.60593037804724e-05 0.199981178184028 0.000171571827959168
302 0.6 0.55975493603725 -0.292898498922329 0.115128512804556 -7.8976964912325e-05 -1.87841159154933e-05 0.199981334052874 5.8789272061599e-05 -0.000135696537340024 8.63072400006381e-05 0.199981350529921 0.000171226950075428
303 0.602 0.559754778200898 -0.292898536761954 0.115528475645277 -7.8859575758372e-05 -1.90549982459487e-05 0.199981506914738 5.86000414859455e-05 -0.000135184932692489 8.65541032943339e-05 0.199981523371073 0.000170881665740692
304 0.604 0.559754620598947 -0.292898575142322 0.115928438832215 -7.87425647463812e-05 -1.93248556462633e-05 0.199981680269287 5.84111231605177e-05 -0.00013467157944369 8.67999066719859e-05 0.199981696705396 0.000170535971035429
305 0.606 0.559754463230639 -0.292898614061377 0.116328402366354 -7.862593126573e-05 -1.95936845637234e-05 0.199981854114364 5.82224754519522e-05 -0.00013415646371584 8.70445980918898e-05 0.199981870530727 0.000170189821850401
306 0.608 0.559754306095221 -0.29289865351706 0.116728366248673 -7.85096748445734e-05 -1.98614815011266e-05 0.199982028447679 5.80341261158245e-05 -0.00013363961673396 8.72881905644717e-05 0.199982044844771 0.00016984326647485
307 0.61 0.55975414919194 -0.292898693507303 0.117128330480145 -7.83937947612667e-05 -2.01282430306593e-05 0.199982203267127 5.78460612743469e-05 -0.000133121045436946 8.75306979675194e-05 0.199982219645416 0.000169496320402131
308 0.612 0.559753992520042 -0.292898734030032 0.117528295061741 -7.8278290599476e-05 -2.03939656828744e-05 0.199982378570471 5.76582809275194e-05 -0.00013260071166088 8.77721046885215e-05 0.199982394930424 0.000169148953452102
309 0.614 0.559753836078777 -0.292898775083166 0.117928259994427 -7.81631616375566e-05 -2.06586458773028e-05 0.199982554355545 5.74708405864932e-05 -0.00013207859458908 8.80124315441599e-05 0.199982570697619 0.000168801187118634
310 0.616 0.559753679867396 -0.292898816664615 0.118328225279163 -7.80484072371301e-05 -2.09222800612307e-05 0.199982730620197 5.72836708623292e-05 -0.00013155470116044 8.82516386357945e-05 0.199982746944846 0.000168452990673301
311 0.618 0.559753523885149 -0.292898858772286 0.118728190916908 -7.79340269541073e-05 -2.11848646819446e-05 0.1999829073621 5.7096799510603e-05 -0.000131029041783303 8.84897120856375e-05 0.19998292366977 0.000168104382602012
312 0.62 0.559753368131288 -0.292898901404074 0.119128156908612 -7.78200200390877e-05 -2.1446396228364e-05 0.199983084579046 5.69102542868904e-05 -0.000130501630335455 8.87266995985846e-05 0.199983100870182 0.000167755416558953
313 0.622 0.559753212605068 -0.292898944557871 0.119528123255224 -7.77063859369597e-05 -2.17068712032864e-05 0.199983262268898 5.67239866189339e-05 -0.000129972425183533 8.89625725516984e-05 0.199983278543936 0.00016740603717026
314 0.624 0.559753057305744 -0.292898988231559 0.119928089957687 -7.75931240926119e-05 -2.19662859290981e-05 0.199983440429336 5.6538038140097e-05 -0.000129441402041408 8.91973057914885e-05 0.199983456688708 0.000167056235081594
315 0.626 0.559752902232572 -0.292899032423015 0.120328057016941 -7.74802337843993e-05 -2.2224636811452e-05 0.199983619058121 5.63524227281675e-05 -0.000128908599072996 8.94309331450626e-05 0.199983635302254 0.000166706071471597
316 0.628 0.559752747384809 -0.292899077130106 0.12072802443392 -7.73677144016992e-05 -2.24819203253901e-05 0.199983798153069 5.61671056886758e-05 -0.000128374005869958 8.96634329283773e-05 0.199983814382383 0.000166355523951098
317 0.63 0.559752592761714 -0.292899122350696 0.121127992209554 -7.72555653616446e-05 -2.27381328349318e-05 0.199983977711853 5.5982093960516e-05 -0.000127837591207269 8.98947886615597e-05 0.199983993926764 0.000166004571016546
318 0.632 0.559752438362548 -0.292899168082638 0.121527960344767 -7.71437860258572e-05 -2.29932706902191e-05 0.199984157732223 5.57973944825818e-05 -0.000127299365493272 9.01250133550357e-05 0.199984173933141 0.000165653239383599
319 0.634 0.55975228418657 -0.292899214323779 0.121927928840482 -7.70323757837143e-05 -2.32473302969049e-05 0.199984338211907 5.56130141937671e-05 -0.000126759339136306 9.03540966004645e-05 0.199984354399237 0.000165301543182377
320 0.636 0.559752130233045 -0.292899261071959 0.122327897697615 -7.69213339690821e-05 -2.35003080467644e-05 0.19998451914861 5.54289669718599e-05 -0.000126217498258585 9.05820479388252e-05 0.199984535322751 0.000164949491223875
321 0.638 0.559751976501234 -0.292899308325011 0.122727866917077 -7.68106599158268e-05 -2.37522002899393e-05 0.199984700540098 5.52452389390722e-05 -0.000125673835921214 9.0808860431224e-05 0.199984716701445 0.000164597079540935
322 0.64 0.559751822990405 -0.29289935608076 0.123127836499775 -7.67003530133258e-05 -2.40030033904492e-05 0.199984882384051 5.50618300954042e-05 -0.000125128331307511 9.10345149957025e-05 0.199984898532992 0.000164244291680899
323 0.642 0.559751669699822 -0.292899404337024 0.123527806446613 -7.65904125954452e-05 -2.42527136151693e-05 0.199985064678158 5.48787543186435e-05 -0.000124580994825818 9.12590272447721e-05 0.199985080815076 0.000163891159008101
324 0.644 0.559751516628755 -0.292899453091614 0.123927776758488 -7.64808379960513e-05 -2.45013273697525e-05 0.19998524742016 5.46959769143207e-05 -0.000124031833415028 9.14823789638363e-05 0.199985263545433 0.000163537675328311
325 0.646 0.55975136377647 -0.292899502342334 0.124327747436294 -7.6371628687788e-05 -2.47488409488294e-05 0.199985430607674 5.4513546454693e-05 -0.000123480826258459 9.17045640813629e-05 0.199985446721674 0.000163183848079068
326 0.648 0.55975121114224 -0.292899552086978 0.124727718480919 -7.62627838102325e-05 -2.49952506747863e-05 0.199985614238417 5.43314837564423e-05 -0.000122927990703347 9.19255956077779e-05 0.199985630341511 0.000162829715203901
327 0.65 0.559751058725335 -0.292899602323337 0.125127689893247 -7.61543027527622e-05 -2.52405529116428e-05 0.199985798310057 5.41497124917356e-05 -0.000122373292055222 9.21454527263998e-05 0.199985814402607 0.000162475224048233
328 0.652 0.559750906525029 -0.29289965304919 0.125527661674159 -7.60461849602655e-05 -2.54847438430072e-05 0.199985982820228 5.39682742939362e-05 -0.000121816726844637 9.23641493150162e-05 0.19998599890259 0.000162120404786359
329 0.654 0.559750754540595 -0.292899704262312 0.125927633824528 -7.59384296555864e-05 -2.57278198190214e-05 0.199986167766654 5.3787183040832e-05 -0.000121258340174402 9.25816680263924e-05 0.199986183839179 0.000161765297192779
330 0.656 0.55975060277131 -0.292899755960469 0.126327606345226 -7.58310362281022e-05 -2.59697772037048e-05 0.1999863531469 5.36064317935291e-05 -0.000120698107758388 9.27980071258049e-05 0.199986369209934 0.000161409890876026
331 0.658 0.55975045121645 -0.292899808141421 0.126727579237116 -7.57240039284123e-05 -2.62106122500549e-05 0.199986538958682 5.34260413687093e-05 -0.000120135991432679 9.3013189164659e-05 0.199986555012565 0.000161054188683264
332 0.66 0.559750299875294 -0.292899860802918 0.12712755250106 -7.56173320626274e-05 -2.64503211694356e-05 0.199986725199656 5.32459840107968e-05 -0.00011957199813617 9.3227179448485e-05 0.199986741244722 0.000160698178395009
333 0.662 0.559750148747122 -0.292899913942705 0.127527526137915 -7.55110199923691e-05 -2.66889002425996e-05 0.1999869118674 5.30662527808978e-05 -0.000119006145216094 9.34399797120066e-05 0.199986927903978 0.000160341883461497
334 0.664 0.559749997831214 -0.292899967558519 0.12792750014853 -7.54050670515038e-05 -2.69263457502999e-05 0.199987098959575 5.2886868495694e-05 -0.000118438453489134 9.36515916899471e-05 0.199987114987989 0.00015998533917281
335 0.666 0.559749847126854 -0.292900021648088 0.128327474533753 -7.52994725183864e-05 -2.71626540565561e-05 0.199987286473767 5.27078519718671e-05 -0.00011786889866916 9.38620032392422e-05 0.199987302494335 0.000159628539381442
336 0.668 0.559749696633324 -0.292900076209135 0.128727449294425 -7.51942356436163e-05 -2.73978213449766e-05 0.199987474407588 5.25291962705232e-05 -0.000117297435653363 9.40712230335094e-05 0.199987490420625 0.000159271465977752
337 0.67 0.559749546349911 -0.292900131239374 0.129127424431383 -7.50893557333043e-05 -2.76318437991696e-05 0.199987662758659 5.23508666971928e-05 -0.000116724088727871 9.42792510727485e-05 0.199987678764471 0.000158914138188323
338 0.672 0.559749396275901 -0.292900186736511 0.12952739994546 -7.49848321768275e-05 -2.78647176998881e-05 0.199987851524592 5.21728840685575e-05 -0.000116148878709366 9.44860821527892e-05 0.199987867523482 0.000158556587936477
339 0.674 0.559749246410583 -0.292900242698245 0.129927375837482 -7.488066419703e-05 -2.8096439314007e-05 0.199988040702988 5.19952969568748e-05 -0.0001155718021284 9.46916937222263e-05 0.199988056695253 0.000158198828101929
340 0.676 0.559749096753245 -0.292900299122268 0.130327352108272 -7.4776850989e-05 -2.83270049084017e-05 0.199988230291367 5.18180498509934e-05 -0.000114992838168293 9.48960892505068e-05 0.199988246277299 0.000157840840327842
341 0.678 0.559748947303179 -0.292900356006264 0.130727328758647 -7.46733919976261e-05 -2.85564106666802e-05 0.199988420287345 5.16411358120194e-05 -0.000114411986829043 9.50992791459714e-05 0.199988436267229 0.000157482642002882
342 0.68 0.559748798059677 -0.29290041334791 0.131127305789421 -7.4570286445752e-05 -2.87846528557178e-05 0.199988610688484 5.14646172899979e-05 -0.000113829255049546 9.53012599391733e-05 0.199988626662603 0.0001571242701938
343 0.682 0.559748649022033 -0.292900471144876 0.131527283201401 -7.44675335284661e-05 -2.90117276868784e-05 0.199988801492384 5.12884734682472e-05 -0.000113244628952014 9.55020246912185e-05 0.199988817461013 0.000156765717608489
344 0.684 0.559748500189543 -0.292900529394821 0.13192726099539 -7.4365132551879e-05 -2.92376313715259e-05 0.199988992696583 5.11126765911917e-05 -0.000112658122414233 9.57015577895958e-05 0.199989008659991 0.000156406989669808
345 0.686 0.559748351561503 -0.292900588095401 0.132327239172187 -7.42630828221013e-05 -2.94623601765353e-05 0.199989184298616 5.09372335977253e-05 -0.000112069738905651 9.58998609690286e-05 0.199989200257068 0.000156048106296902
346 0.688000000000001 0.559748203137211 -0.292900647244262 0.132727217732585 -7.41613836174881e-05 -2.96859103271485e-05 0.199989376296027 5.07621653045298e-05 -0.000111479447201246 9.60969324947935e-05 0.199989392249784 0.000155689065157476
347 0.690000000000001 0.559748054915968 -0.292900706839042 0.133127196677371 -7.40600341608832e-05 -2.99082779653403e-05 0.199989568686345 5.05874855893928e-05 -0.000110887264648252 9.62927914488486e-05 0.199989584635661 0.000155329909690439
348 0.692000000000001 0.559747906897075 -0.292900766877374 0.13352717600733 -7.39590336751305e-05 -3.01294593857415e-05 0.199989761467192 5.04131805745267e-05 -0.000110293208593903 9.6487411810342e-05 0.199989777412315 0.000154970646496156
349 0.694000000000001 0.559747759079834 -0.29290082735688 0.13392715572324 -7.38583814385851e-05 -3.03494507997159e-05 0.199989954635993 5.02392225043557e-05 -0.000109697261690966 9.66807710278682e-05 0.199989970577167 0.000154611255045943
350 0.696000000000001 0.559747611463549 -0.292900888275177 0.134327135825874 -7.37580767851131e-05 -3.05682484325054e-05 0.199990148190276 5.00656530122434e-05 -0.0001090994135311 9.68728985917266e-05 0.19999016412774 0.000154251775114373
351 0.698000000000001 0.559747464047526 -0.292900949629874 0.134727116316001 -7.36581188265361e-05 -3.07858484538403e-05 0.199990342127587 4.98924790370836e-05 -0.00010849966758375 9.70637823588526e-05 0.199990358061573 0.000153892219348662
352 0.700000000000001 0.559747316831074 -0.292901011418571 0.135127097194385 -7.35585068689647e-05 -3.10022471028404e-05 0.199990536445406 4.97196658844067e-05 -0.000107898041196153 9.72534101861821e-05 0.199990552376142 0.000153532596742403
353 0.702000000000001 0.559747169813499 -0.292901073638862 0.135527078461783 -7.34592401629985e-05 -3.12174406186249e-05 0.199990731141228 4.95472551875764e-05 -0.000107294517021073 9.74417994209497e-05 0.199990747068937 0.000153172935448142
354 0.704000000000001 0.559747022994113 -0.292901136288333 0.13592706011895 -7.33603178482144e-05 -3.14314251709246e-05 0.199990926212604 4.93752261299107e-05 -0.000106689115875191 9.76289361853676e-05 0.199990942137502 0.000152813250676427
355 0.706000000000001 0.559746876372228 -0.292901199364563 0.136327042166633 -7.32617392584788e-05 -3.16441970821257e-05 0.199991121656973 4.92035509558341e-05 -0.000106081813472381 9.78147909891368e-05 0.199991137579273 0.000152453513939498
356 0.708000000000001 0.559746729947156 -0.292901262865122 0.136727024605577 -7.31635036443911e-05 -3.18557524248142e-05 0.199991317471768 4.90322712987101e-05 -0.000105472602873746 9.79993759753216e-05 0.199991333391676 0.000152093758179702
357 0.710000000000001 0.559746583718213 -0.292901326787572 0.13712700743652 -7.3065610173284e-05 -3.20660874936207e-05 0.199991513654476 4.88614079752203e-05 -0.000104861539590439 9.81827171647741e-05 0.199991529572195 0.000151734062176086
358 0.712000000000001 0.559746437684715 -0.292901391129472 0.137526990660195 -7.29680580124902e-05 -3.22751985831759e-05 0.199991710202636 4.8690940168683e-05 -0.000104248561172415 9.8364805883877e-05 0.19999172611836 0.000151374387521806
359 0.714000000000001 0.559746291845981 -0.292901455888367 0.137926974277331 -7.28708464126093e-05 -3.24830817383104e-05 0.1999919071137 4.85208331846287e-05 -0.000103633688436355 9.85455952950964e-05 0.19999192302762 0.000151014724394408
360 0.716000000000001 0.55974614620133 -0.292901521061799 0.13832695828865 -7.27739746797517e-05 -3.26897333369214e-05 0.199992104385017 4.8351114778633e-05 -0.000103016969954517 9.87251010109435e-05 0.19999212029732 0.000150655142522807
361 0.718000000000001 0.559746000750082 -0.2929015866473 0.138726942694871 -7.26774419534947e-05 -3.28951496181284e-05 0.199992302014104 4.81818127062716e-05 -0.000102398350215749 9.89033421133766e-05 0.199992317924969 0.000150295642930076
362 0.720000000000001 0.559745855491562 -0.292901652642397 0.139126927496707 -7.25812474289266e-05 -3.30993267377843e-05 0.199992499998386 4.80128992119688e-05 -0.000101777836158945 9.90802977857141e-05 0.199992515907989 0.000149936225887013
363 0.722000000000001 0.559745710425092 -0.292901719044607 0.139526912694865 -7.24853903566468e-05 -3.33022609627642e-05 0.199992698335295 4.78443881735124e-05 -0.00010115544513134 9.92559767015732e-05 0.199992714243806 0.000149576931611798
364 0.724000000000001 0.55974556555 -0.292901785851441 0.139926898290048 -7.23898698762326e-05 -3.35039485183097e-05 0.199992897022293 4.76762865297963e-05 -0.000100531184071828 9.94303563095488e-05 0.199992912929877 0.00014921777046987
365 0.726000000000001 0.559745420865613 -0.292901853060401 0.140326884282954 -7.22946852105277e-05 -3.37043856990515e-05 0.19999309605672 4.75085942808206e-05 -9.99050356331742e-05 9.96034262013e-05 0.199993111963537 0.000148858742391716
366 0.728000000000001 0.559745276371259 -0.292901920668984 0.140726870674275 -7.21998354991093e-05 -3.39035686608424e-05 0.199993295435997 4.73412836710096e-05 -9.92770067542724e-05 9.97752123976791e-05 0.199993311342201 0.000148499879524223
367 0.730000000000001 0.559745132066271 -0.292901988674676 0.141126857464698 -7.21053200758436e-05 -3.41014937260686e-05 0.19999349515757 4.71743408225755e-05 -9.86471321295922e-05 9.99457201028563e-05 0.199993511063309 0.000148141223419804
368 0.732000000000001 0.559744987949979 -0.292902057074959 0.141526844654905 -7.2011138135819e-05 -3.42981571893608e-05 0.199993695218878 4.7007862880033e-05 -9.80153701257684e-05 0.000100114912887639 0.199993711124298 0.00014778277212158
369 0.734000000000001 0.559744844021718 -0.292902125867305 0.141926832245573 -7.19172886243235e-05 -3.44935552065717e-05 0.199993895617222 4.68418012711247e-05 -9.73817415594862e-05 0.000100282771670068 0.199993911522461 0.000147424530622665
370 0.736000000000001 0.559744700280825 -0.292902195049179 0.142326820237374 -7.18237709307345e-05 -3.46876841555987e-05 0.199994096349965 4.66760935458054e-05 -9.67462672474272e-05 0.000100449348491849 0.199994112255157 0.000147066548023146
371 0.738000000000001 0.559744556726635 -0.292902264618041 0.142726808630973 -7.17305842501403e-05 -3.48805402755614e-05 0.199994297414616 4.65108229708022e-05 -9.61089124951186e-05 0.000100614615597405 0.19999431331989 0.000146708829271552
372 0.740000000000001 0.559744413358488 -0.29290233457134 0.143126797427032 -7.16377276388513e-05 -3.50721198055792e-05 0.199994498808427 4.63459964850088e-05 -9.54697154664785e-05 0.000100778546965885 0.199994514713908 0.000146351404127169
373 0.742000000000001 0.559744270175724 -0.29290240490652 0.143526786626207 -7.15452002642002e-05 -3.52624191374273e-05 0.199994700528803 4.61815516383801e-05 -9.48286761615068e-05 0.000100941175557034 0.199994716434609 0.000145994295974563
374 0.744000000000001 0.559744127177687 -0.292902475621017 0.143926776229147 -7.14530014322978e-05 -3.54514345102252e-05 0.199994902573129 4.60175092475978e-05 -9.41857598857342e-05 0.000101102458002766 0.199994918479373 0.000145637479849134
375 0.746000000000001 0.559743984363718 -0.292902546712258 0.144326766236499 -7.13611302272098e-05 -3.56391621769702e-05 0.199995104938635 4.58539109460254e-05 -9.35410013336301e-05 0.000101262416854486 0.199995120845426 0.000145281028172146
376 0.748000000000001 0.559743841733166 -0.292902618177666 0.144726756648902 -7.12695857885137e-05 -3.58255985155597e-05 0.199995307622797 4.56907151002994e-05 -9.2894435199664e-05 0.000101421065989982 0.199995323530238 0.000144924981159169
377 0.750000000000001 0.559743699285375 -0.292902690014653 0.145126747466991 -7.11783673668086e-05 -3.60107399177689e-05 0.199995510622899 4.55279286493137e-05 -9.22460198504726e-05 0.000101578353367548 0.199995526531089 0.000144569299431841
378 0.752000000000001 0.559743557019696 -0.292902762220625 0.145526738691394 -7.10874740739164e-05 -3.61945825949616e-05 0.19999571393621 4.5365579348644e-05 -9.1595737938821e-05 0.00010173432062055 0.199995729845242 0.000144214031877346
379 0.754000000000001 0.559743414935479 -0.292902834792983 0.145926730322735 -7.09969050494141e-05 -3.63771228695242e-05 0.199995917560182 4.52036741371841e-05 -9.09436553842013e-05 0.000101888959075369 0.199995933470145 0.000143859238812123
380 0.756000000000001 0.559743273032076 -0.292902907729117 0.146326722361634 -7.09066593773677e-05 -3.65583572164984e-05 0.199996121492046 4.50421644426768e-05 -9.02897721866135e-05 0.000102042227098642 0.199996137403024 0.000143504897653155
381 0.758000000000001 0.559743131308841 -0.292902981026412 0.146726714808704 -7.08167363916434e-05 -3.67382819582706e-05 0.19999632572909 4.48810363873342e-05 -8.96340536515882e-05 0.000102194145507051 0.199996341641161 0.000143151019476402
382 0.760000000000001 0.55974298976513 -0.292903054682245 0.147126707664551 -7.07271352318183e-05 -3.69168934311048e-05 0.199996530268628 4.47203871156709e-05 -8.89765240652539e-05 0.000102344735117277 0.199996546181865 0.000142797687883018
383 0.762000000000001 0.559742848400301 -0.292903128693985 0.147526700929778 -7.06378548431807e-05 -3.70941880545317e-05 0.199996735108031 4.45601749943236e-05 -8.83171938359516e-05 0.000102493961234851 0.199996751022503 0.000142444894651205
384 0.764000000000001 0.559742707213711 -0.292903203058997 0.147926694604983 -7.0548894531841e-05 -3.72701622064486e-05 0.199996940244473 4.44003583899288e-05 -8.76560490858934e-05 0.00010264179783892 0.199996956160245 0.000142092622715286
385 0.766000000000001 0.559742566204722 -0.292903277774634 0.148326688690756 -7.0460253409621e-05 -3.74448122508752e-05 0.199997145675222 4.42409997525317e-05 -8.69931106317611e-05 0.00010278829697119 0.199997161592352 0.00014174096567588
386 0.768000000000001 0.559742425372697 -0.292903352838246 0.148726683187684 -7.03719305328309e-05 -3.76181346489756e-05 0.199997351397661 4.40820574487688e-05 -8.63283992902363e-05 0.000102933430876084 0.199997367316203 0.000141389927168991
387 0.770000000000001 0.559742284717 -0.292903428247173 0.149126678096347 -7.02839251798259e-05 -3.77901258480362e-05 0.199997557408946 4.39235314786401e-05 -8.56619011835313e-05 0.000103077187410538 0.199997573328949 0.000141039513954067
388 0.772000000000001 0.559742144236997 -0.292903503998749 0.14952667341732 -7.01962364069163e-05 -3.79607822537098e-05 0.199997763706411 4.37654495977213e-05 -8.49936267199868e-05 0.000103219578717617 0.19999777962792 0.000140689774298452
389 0.774000000000001 0.559742003932055 -0.292903580090302 0.149926669151172 -7.0108863381435e-05 -3.81301003549161e-05 0.19999797028726 4.36078048671184e-05 -8.43235897773908e-05 0.000103360582245915 0.199997986210315 0.000140340722530878
390 0.776000000000001 0.559741863801543 -0.292903656519151 0.150326665298469 -7.00218051874479e-05 -3.82980766128193e-05 0.19999817714874 4.34505764701498e-05 -8.36517660696145e-05 0.00010350021187322 0.199998193073374 0.000139992372720642
391 0.778000000000001 0.559741723844834 -0.292903733282608 0.150726661859767 -6.99350610755544e-05 -3.84647074191946e-05 0.199998384288108 4.32937852234971e-05 -8.29782111078092e-05 0.00010363844678285 0.199998400214352 0.000139644774371231
392 0.780000000000001 0.559741584061299 -0.29290381037798 0.151126658835621 -6.98486300465539e-05 -3.86299894572506e-05 0.199998591702527 4.31374796994177e-05 -8.23029214225279e-05 0.000103775307791487 0.199998607630406 0.000139297981093476
393 0.782000000000001 0.559741444450314 -0.292903887802566 0.151526656226577 -6.97625111567567e-05 -3.87939191048847e-05 0.199998799389339 4.29815766311847e-05 -8.1625865788748e-05 0.000103910777551896 0.199998815318874 0.000138951961435976
394 0.784000000000001 0.559741305011254 -0.292903965553657 0.151926654033178 -6.96767037400291e-05 -3.89564929204056e-05 0.199999007345637 4.28260898965859e-05 -8.0947092778727e-05 0.000104044810961268 0.199999023276844 0.000138606740431785
395 0.786000000000001 0.559741165743499 -0.292904043628538 0.15232665225596 -6.95912067971704e-05 -3.91177074759996e-05 0.199999215568583 4.26710611289848e-05 -8.0266578106336e-05 0.000104177475673817 0.199999231501473 0.000138262393500701
396 0.788000000000001 0.559741026646427 -0.292904122024487 0.152726650895453 -6.95060194955132e-05 -3.92775592328309e-05 0.19999942405554 4.25164833894875e-05 -7.95843668743856e-05 0.000104308754342308 0.199999439990119 0.000137918958243779
397 0.790000000000001 0.559740887719421 -0.292904200738775 0.153126649952182 -6.94211408636124e-05 -3.94360449434971e-05 0.1999996328036 4.23623497392e-05 -7.89004590828756e-05 0.000104438594925038 0.19999964873987 0.000137576419595914
398 0.792000000000001 0.559740748961864 -0.292904279768667 0.153526649426667 -6.93365700965564e-05 -3.95931610691624e-05 0.19999984180992 4.22086324225468e-05 -7.82148200373366e-05 0.000104567032116476 0.199999857747877 0.00013723480218262
399 0.794000000000001 0.55974061037314 -0.292904359111419 0.153926649319422 -6.92523063339223e-05 -3.97489042236465e-05 0.200000051071729 4.2055386950679e-05 -7.7527494840579e-05 0.000104694058977728 0.200000067011367 0.000136894170851279
400 0.796000000000001 0.559740471952638 -0.292904438764283 0.154326649630954 -6.91683485487537e-05 -3.99032710485247e-05 0.200000260586155 4.19025716902332e-05 -7.68384973703905e-05 0.000104819663365729 0.200000276527463 0.000136554538630173
401 0.798000000000001 0.559740333699746 -0.292904518724503 0.154726650361766 -6.90846960471613e-05 -4.0056258213128e-05 0.200000470350382 4.17501866412095e-05 -7.61478310962182e-05 0.000104943836606863 0.200000486293342 0.000136215928242633
402 0.800000000000001 0.559740195613854 -0.292904598989316 0.155126651512356 -6.90013478021888e-05 -4.02078623729096e-05 0.200000680361502 4.15982734369713e-05 -7.54554960180619e-05 0.000105066580435853 0.200000696306092 0.00013587838149151
403 0.802000000000001 0.559740057694355 -0.292904679555953 0.155526653083212 -6.89183029534134e-05 -4.03580801972003e-05 0.200000890616704 4.14467765663673e-05 -7.47615129526035e-05 0.00010518791046521 0.2000009065629 0.000135541933049303
404 0.804000000000001 0.559739919940642 -0.292904760421637 0.155926655074822 -6.88355606959234e-05 -4.050690842472e-05 0.200001101113144 4.12957446016548e-05 -7.40658818998429e-05 0.000105307797204634 0.200001117060915 0.000135206603151987
405 0.806000000000001 0.559739782352112 -0.292904841583586 0.156326657487665 -6.87531199750068e-05 -4.06543437247997e-05 0.200001311847893 4.114517060394e-05 -7.33686063292271e-05 0.000105426252797192 0.200001327797206 0.000134872429493866
406 0.808000000000001 0.559739644928162 -0.292904923039012 0.156726660322214 -6.86709800135076e-05 -4.08003828500369e-05 0.200001522818155 4.09950129398561e-05 -7.26697139963316e-05 0.000105543254691476 0.20000153876897 0.000134539425556665
407 0.810000000000001 0.559739507668192 -0.292905004785118 0.157126663578938 -6.85891399232474e-05 -4.0945022580785e-05 0.200001734020912 4.0845327120561e-05 -7.19692222483914e-05 0.000105658795948593 0.200001749973185 0.000134207640840343
408 0.812000000000001 0.559739370571603 -0.292905086819102 0.157526667258298 -6.85075987050254e-05 -4.10882597390305e-05 0.200001945453339 4.06961131460548e-05 -7.12671172076184e-05 0.000105772906058843 0.200001961407023 0.00013387712006319
409 0.814000000000001 0.559739233637797 -0.292905169138157 0.157926671360751 -6.84263554706632e-05 -4.12300910496155e-05 0.200002157112536 4.05473155051794e-05 -7.05634092823536e-05 0.000105885539919415 0.200002173067579 0.000133547845689294
410 0.816000000000001 0.559739096866181 -0.292905251739466 0.158326675886748 -6.83454094430047e-05 -4.13705133761599e-05 0.200002368995498 4.039895501462e-05 -6.98581401059605e-05 0.000105996728755331 0.200002384951845 0.000133219900210774
411 0.818000000000001 0.55973896025616 -0.29290533462021 0.158726680836733 -6.82647596506047e-05 -4.15095236100393e-05 0.200002581099451 4.02510941244216e-05 -6.91512923312042e-05 0.000106106472566592 0.200002597057039 0.000132893323119762
412 0.820000000000001 0.559738823807142 -0.292905417777561 0.159126686211146 -6.8184405066507e-05 -4.16471185454847e-05 0.200002793421389 4.01036703845392e-05 -6.84428798358727e-05 0.00010621472798511 0.200002809380154 0.000132568098045836
413 0.822000000000001 0.559738687518539 -0.292905501208685 0.159526692010418 -6.81043449690665e-05 -4.17832951293828e-05 0.200003005958363 3.99566352227154e-05 -6.77329199672005e-05 0.000106321514092844 0.200003021918236 0.000132244264543303
414 0.824000000000001 0.559738551389762 -0.292905584910741 0.159926698234979 -6.80245785256161e-05 -4.19180502253535e-05 0.200003218707445 3.98100927223588e-05 -6.702141966408e-05 0.000106426808338389 0.200003234668353 0.000131921869716312
415 0.826000000000001 0.559738415420225 -0.292905668880885 0.160326704885248 -6.79451045981771e-05 -4.20513808080391e-05 0.200003431665596 3.9664063700151e-05 -6.6308410151537e-05 0.000106530631538426 0.200003447627461 0.000131600982754727
416 0.828000000000001 0.559738279609344 -0.292905753116265 0.160726711961641 -6.78659222708155e-05 -4.21832838659597e-05 0.200003644829971 3.95184301948958e-05 -6.55938810212308e-05 0.000106632983692956 0.200003660792712 0.000131281593392823
417 0.830000000000001 0.559738143956536 -0.292905837614021 0.161126719464568 -6.77870308773975e-05 -4.2313756332124e-05 0.200003858197531 3.93732338399566e-05 -6.48778600287336e-05 0.000106733830107508 0.200003874161061 0.000130963730682744
418 0.832000000000001 0.55973800846122 -0.29290592237129 0.161526727394431 -6.77084293354557e-05 -4.24427953060746e-05 0.200004071765292 3.92285370853784e-05 -6.41603541129409e-05 0.000106833195068212 0.200004087729522 0.00013064746737017
419 0.834000000000001 0.559737873122819 -0.292906007385202 0.161926735751629 -6.7630116729056e-05 -4.25703977485758e-05 0.200004285530311 3.90842636033284e-05 -6.34413563349589e-05 0.000106931057758386 0.200004301495147 0.000130332791224469
420 0.836000000000001 0.559737737940754 -0.292906092652881 0.162326744536553 -6.75520922810424e-05 -4.26965607314144e-05 0.200004499489523 3.89404342104882e-05 -6.27209187364918e-05 0.000107027412973859 0.200004515454866 0.00013001976077323
421 0.838000000000001 0.55973760291445 -0.292906178171445 0.162726753749587 -6.7474354992214e-05 -4.28212814235218e-05 0.200004713639963 3.87970974791152e-05 -6.19990482564336e-05 0.000107122272857696 0.200004729605713 0.000129708434959744
422 0.840000000000001 0.559737468043334 -0.292906263938007 0.163126763391113 -6.73969038911259e-05 -4.29445569244402e-05 0.200004927978614 3.86542187147398e-05 -6.12757136697616e-05 0.000107215611389044 0.200004943944664 0.000129398798432258
423 0.842000000000001 0.559737333326834 -0.292906349949673 0.163526773461502 -6.73197381173551e-05 -4.30663842782008e-05 0.200005142502409 3.85117493451048e-05 -6.05509392626046e-05 0.000107307426833181 0.200005158468649 0.000129090878596291
424 0.844000000000001 0.559737198764381 -0.292906436203544 0.163926783961122 -6.72428568937455e-05 -4.31867606814906e-05 0.200005357208321 3.83697518202552e-05 -5.98248013627955e-05 0.00010739773653734 0.200005373174638 0.000128784775987652
425 0.846000000000001 0.559737064355406 -0.292906522696715 0.164326794890335 -6.71662591100741e-05 -4.3305683483652e-05 0.200005572093355 3.82282400179789e-05 -5.90972687453117e-05 0.000107486526623734 0.200005588059631 0.00012848050013003
426 0.848000000000001 0.559736930099345 -0.292906609426278 0.164726806249496 -6.70899439336736e-05 -4.34231497564718e-05 0.200005787154428 3.80871445493369e-05 -5.83683310018123e-05 0.000107573772806235 0.200005803120542 0.000128178037274826
427 0.850000000000001 0.559736795995631 -0.292906696389314 0.165126818038953 -6.70139105318767e-05 -4.35391568076593e-05 0.200006002388446 3.79465209254803e-05 -5.76380609906834e-05 0.000107659495901524 0.200006018354272 0.000127877486614665
428 0.852000000000001 0.559736662043703 -0.292906783582905 0.165526830259049 -6.69381578499716e-05 -4.36537020004346e-05 0.200006217792412 3.78063691464092e-05 -5.69064240174554e-05 0.000107743687235984 0.200006233757821 0.000127578857110786
429 0.854000000000001 0.559736528242999 -0.292906871004122 0.165926842910122 -6.68626850552911e-05 -4.37667825037291e-05 0.200006433363195 3.76666406398662e-05 -5.6173451307151e-05 0.000107826322523485 0.200006449328056 0.000127282160092404
430 0.856000000000001 0.559736394592962 -0.292906958650035 0.166326855992502 -6.67874912874122e-05 -4.38783958056632e-05 0.200006649097702 3.75273770392148e-05 -5.54391740847925e-05 0.000107907419111264 0.200006665061877 0.000126987468475835
431 0.858000000000001 0.559736261093034 -0.292907046517706 0.166726869506513 -6.67125755471342e-05 -4.39885392000682e-05 0.200006864992871 3.73885922222427e-05 -5.47035750031454e-05 0.000107986968325702 0.200006880956221 0.000126694803660853
432 0.860000000000001 0.55973612774266 -0.292907134604192 0.167126883452474 -6.66379369185232e-05 -4.40972101056758e-05 0.200007081045575 3.72502514944805e-05 -5.396669916502e-05 0.000108064942411223 0.200007097007956 0.000126404183607628
433 0.862000000000001 0.559735994541287 -0.292907222906546 0.167526897830696 -6.65635745411563e-05 -4.42044059967283e-05 0.200007297252641 3.71123617948221e-05 -5.32285396315224e-05 0.000108141353510893 0.200007313213905 0.000126115649974388
434 0.864000000000001 0.559735861488362 -0.292907311421816 0.167926912641484 -6.64894874713439e-05 -4.43101242642018e-05 0.200007513610989 3.69749370010552e-05 -5.24891449749098e-05 0.000108216220706669 0.200007529570986 0.00012582927612628
435 0.866000000000001 0.559735728583337 -0.292907400147043 0.16832692788514 -6.64156747931521e-05 -4.4414362576628e-05 0.200007730117524 3.68379493576043e-05 -5.17485221340763e-05 0.000108289504099912 0.2000077460761 0.000125545054678148
436 0.868000000000001 0.559735595825663 -0.292907489079266 0.168726943561954 -6.63421356739135e-05 -4.45171183527382e-05 0.200007946769005 3.67014127422571e-05 -5.10066468228931e-05 0.000108361208894792 0.200007962726003 0.000125263016531351
437 0.870000000000001 0.559735463214794 -0.292907578215517 0.169126959672216 -6.62688691421831e-05 -4.46183891639195e-05 0.200008163562359 3.6565375727271e-05 -5.02635641441706e-05 0.000108431352438543 0.200008179517617 0.000124983241973487
438 0.872000000000001 0.559735330750186 -0.292907667552823 0.169526976216204 -6.61958741710044e-05 -4.47181726093148e-05 0.200008380494415 3.64297689237069e-05 -4.95192914451436e-05 0.000108499903506143 0.200008396447768 0.000124705723003822
439 0.874000000000001 0.559735198431297 -0.292907757088207 0.169926993194193 -6.61231500664882e-05 -4.48164663297001e-05 0.200008597561973 3.6294585392671e-05 -4.87738668897286e-05 0.000108566856893422 0.200008613513254 0.000124430500424613
440 0.876000000000001 0.559735066257586 -0.292907846818688 0.170327010606452 -6.60506958294337e-05 -4.49132680768738e-05 0.200008814761843 3.61598945231023e-05 -4.80272835390316e-05 0.000108632210865656 0.200008830710879 0.000124157622293682
441 0.878000000000001 0.559734934228514 -0.292907936741279 0.170727028453241 -6.59785104883958e-05 -4.50085754638562e-05 0.200009032090817 3.60256546816373e-05 -4.72795240458179e-05 0.000108695975831186 0.200009048037435 0.000123887111319674
442 0.880000000000001 0.559734802343544 -0.29290802685299 0.171127046734815 -6.59065932107072e-05 -4.5102386173057e-05 0.200009249545746 3.58918450515943e-05 -4.65306682073674e-05 0.000108758137912224 0.200009265489769 0.00012361901223989
443 0.882000000000001 0.559734670602141 -0.292908117150824 0.171527065451424 -6.58349431081894e-05 -4.51946981366857e-05 0.200009467123369 3.57585142052308e-05 -4.57807333709148e-05 0.000108818679761535 0.200009483064615 0.000123353362139781
444 0.884000000000001 0.559734539003772 -0.292908207631782 0.171927084603308 -6.57635591538863e-05 -4.52855091065407e-05 0.200009684820465 3.5625627448077e-05 -4.50296779030967e-05 0.000108877610052738 0.20000970075875 0.000123090175050334
445 0.886000000000001 0.559734407547904 -0.29290829829286 0.172327104190705 -6.56924405983971e-05 -4.53748168482981e-05 0.200009902633809 3.54931778412393e-05 -4.42775503761705e-05 0.000108934927051107 0.200009918568946 0.000122829497565586
446 0.888000000000001 0.559734276234009 -0.29290838913105 0.172727124213844 -6.56215864425213e-05 -4.54626193080454e-05 0.200010120560173 3.53612208958686e-05 -4.35243993623935e-05 0.000108990639430262 0.200010136491972 0.00012257140272723
447 0.890000000000001 0.559734145061559 -0.292908480143338 0.173127144672946 -6.55509957148137e-05 -4.55489144457477e-05 0.200010338596367 3.52296802841323e-05 -4.27702248617656e-05 0.000109044709026285 0.200010354524634 0.000122315865995689
448 0.892000000000001 0.559734014030026 -0.292908571326708 0.173527165568229 -6.54806677213848e-05 -4.56337002074924e-05 0.200010556739009 3.50985907004997e-05 -4.2015019935393e-05 0.000109097101144706 0.200010572663549 0.000122062895457673
449 0.894000000000001 0.559733883138888 -0.292908662678139 0.173927186899902 -6.54106013520117e-05 -4.57169745254892e-05 0.200010774984771 3.49679799005464e-05 -4.12588192777452e-05 0.000109147881705018 0.200010790905384 0.000121812601430276
450 0.896000000000001 0.559733752387621 -0.292908754194606 0.174327208668168 -6.53407958017826e-05 -4.57987354846034e-05 0.200010993330536 3.48377923731213e-05 -4.05016437055039e-05 0.000109197040298881 0.20001100924702 0.000121564997142745
451 0.898000000000001 0.559733621775705 -0.29290884587308 0.174727230873224 -6.52712501825192e-05 -4.58789811003113e-05 0.200011211772932 3.47080697515878e-05 -3.97435140353508e-05 0.000109244517945695 0.200011227685082 0.000121320079603281
452 0.900000000000001 0.55973349130262 -0.29290893771053 0.17512725351526 -6.52019635227762e-05 -4.59577095407448e-05 0.200011430308608 3.45787842803702e-05 -3.89844684312024e-05 0.000109290351074653 0.200011446216216 0.000121077916810593
453 0.902000000000001 0.559733360967851 -0.292909029703919 0.175527276594459 -6.51329350453977e-05 -4.60349189740361e-05 0.200011648934337 3.44499498372563e-05 -3.82244895458239e-05 0.000109334534481586 0.200011664837192 0.000120838533072582
454 0.904000000000001 0.55973323077088 -0.292909121850206 0.175927300110997 -6.50641637234272e-05 -4.61106074989281e-05 0.200011867646746 3.43215872389279e-05 -3.74636051347909e-05 0.00010937705602343 0.200011883544636 0.000120601962855699
455 0.906000000000001 0.559733100711196 -0.292909214146349 0.176327324065046 -6.4995648696442e-05 -4.61847733945752e-05 0.200012086442561 3.41936479131277e-05 -3.67018707092548e-05 0.000109417893148778 0.200012102335269 0.000120368219278525
456 0.908000000000001 0.559732970788285 -0.2929093065893 0.176727348456768 -6.49273891317747e-05 -4.62574149817651e-05 0.200012305318318 3.40661665543251e-05 -3.59392758608745e-05 0.000109457033714566 0.200012321205626 0.000120137327599305
457 0.910000000000001 0.559732841001639 -0.292909399176009 0.177127373286319 -6.48593840302247e-05 -4.63285304980187e-05 0.200012524270696 3.39391154069446e-05 -3.5175834467438e-05 0.000109494524558329 0.200012540152381 0.000119909356571291
458 0.912000000000001 0.559732711350749 -0.292909491903422 0.17752739855385 -6.47916326701469e-05 -4.63981183196349e-05 0.200012743296417 3.38124944709861e-05 -3.44115951012025e-05 0.00010953033272032 0.200012759172257 0.000119684319965414
459 0.914000000000001 0.559732581835108 -0.292909584768482 0.177927424259505 -6.47241340523407e-05 -4.64661768784235e-05 0.200012962392026 3.36863592576009e-05 -3.36465473538272e-05 0.000109564432179687 0.200012978261795 0.000119462235655134
460 0.916000000000001 0.559732452454213 -0.292909677768129 0.178327450403418 -6.46568872331165e-05 -4.65327045090502e-05 0.200013181554145 3.35606681334255e-05 -3.28807155114408e-05 0.000109596826405878 0.200013197417613 0.000119243130856022
461 0.918000000000001 0.55973232320756 -0.2929097708993 0.178727476985721 -6.4589891379807e-05 -4.65976997404693e-05 0.200013400779332 3.34353933428843e-05 -3.21141585546414e-05 0.000109627511929444 0.200013416636268 0.000119027039278924
462 0.920000000000001 0.559732194094647 -0.292909864158928 0.179127504006536 -6.4523145659745e-05 -4.66611611432688e-05 0.200013620064193 3.33105557026591e-05 -3.13468695445351e-05 0.000109656513036516 0.200013635914364 0.000118814015178301
463 0.922000000000001 0.559732065114977 -0.292909957543944 0.179527531465978 -6.44566491569964e-05 -4.67230872186474e-05 0.200013839405384 3.31861829683255e-05 -3.0578848481122e-05 0.000109683814114581 0.200013855248554 0.000118604080002167
464 0.924000000000001 0.559731936268051 -0.292910051051277 0.179927559364157 -6.43904009278717e-05 -4.67834765371932e-05 0.20001405879945 3.30622473843078e-05 -2.98101404672124e-05 0.000109709364856658 0.200014074635379 0.000118397218776572
465 0.926000000000001 0.559731807553373 -0.292910144677851 0.180327587701176 -6.43244001674592e-05 -4.68423277805163e-05 0.200014278242844 3.29387420117122e-05 -2.90407906056167e-05 0.000109733184344707 0.200014294071293 0.000118193485398912
466 0.928000000000001 0.55973167897045 -0.292910238420588 0.180727616477129 -6.42586459598248e-05 -4.68996396996157e-05 0.200014497732187 3.28156737894325e-05 -2.82708023657818e-05 0.000109755295130132 0.200014513552914 0.000117992929965154
467 0.930000000000001 0.559731550518789 -0.292910332276409 0.181127645692105 -6.41931374723014e-05 -4.69554109899794e-05 0.200014717264024 3.2693021900787e-05 -2.75001757477078e-05 0.00010977567119208 0.200014733076784 0.000117795548866805
468 0.932000000000001 0.5597314221979 -0.292910426242232 0.181527675346185 -6.41278738722217e-05 -4.70096404026065e-05 0.200014936834872 3.25708487958209e-05 -2.6728952384758e-05 0.000109794295183319 0.200014952639417 0.000117601378995608
469 0.934000000000001 0.559731294007294 -0.292910520314971 0.181927705439444 -6.40628540771181e-05 -4.70623267995185e-05 0.200015156441205 3.24491336578525e-05 -2.59571600325081e-05 0.000109811165369122 0.200015172237287 0.000117410444475026
470 0.936000000000001 0.559731165946484 -0.292910614491539 0.18232773597195 -6.39980773375903e-05 -4.71134690427366e-05 0.200015376079533 3.23277793423671e-05 -2.51848125687459e-05 0.000109826304300897 0.200015391866901 0.000117222767488764
471 0.938000000000001 0.559731038014984 -0.292910708768847 0.182727766943762 -6.39335429597487e-05 -4.71630660497934e-05 0.200015595746422 3.22068621771976e-05 -2.44119308101531e-05 0.000109839668610556 0.200015611524823 0.00011703835754853
472 0.940000000000001 0.559730910212312 -0.292910803143803 0.183127798354935 -6.38692498888815e-05 -4.72111167659772e-05 0.200015815438208 3.20864307346014e-05 -2.36385355734114e-05 0.000109851260032823 0.200015831207387 0.000116857257935229
473 0.942000000000001 0.559730782537985 -0.292910897613314 0.183527830205515 -6.38051972368103e-05 -4.72576201920871e-05 0.200016035151462 3.19664086867455e-05 -2.28646719613312e-05 0.000109861101119102 0.200016050911163 0.000116679501401612
474 0.944000000000001 0.559730654991523 -0.292910992174284 0.183927862495541 -6.37413842541345e-05 -4.73025754538225e-05 0.200016254882612 3.18468168503116e-05 -2.20903365044655e-05 0.000109869155440201 0.200016270632576 0.000116505081552355
475 0.946000000000001 0.559730527572448 -0.292911086823616 0.184327895225045 -6.3677809969409e-05 -4.73459815381049e-05 0.200016474628084 3.17276621641937e-05 -2.13155465500492e-05 0.000109875436873907 0.20001649036805 0.000116334039297896
476 0.948000000000001 0.559730400280283 -0.29291118155821 0.184727928394053 -6.36144736054777e-05 -4.73878376400227e-05 0.20001669438436 3.16088960561345e-05 -2.05403714870211e-05 0.000109879935011881 0.200016710114067 0.000116166386226513
477 0.950000000000001 0.559730273114553 -0.292911276374967 0.185127962002583 -6.35513743851845e-05 -4.7428143024053e-05 0.200016914147824 3.14905948539667e-05 -1.97647974375936e-05 0.000109882634241609 0.200016929867009 0.000116002146919275
478 0.952000000000001 0.559730146074786 -0.292911371270782 0.185527996050645 -6.34885112260619e-05 -4.74668968297731e-05 0.200017133914897 3.1372730802115e-05 -1.89888521573422e-05 0.000109883543236711 0.200017149623294 0.00011584134762031
479 0.954000000000001 0.559730019160509 -0.292911466242554 0.185928030538242 -6.3425883461976e-05 -4.75040984326824e-05 0.200017353681997 3.12552345116401e-05 -1.82125738101835e-05 0.00010988263944578 0.200017369379339 0.000115683974606426
480 0.956000000000001 0.559729892371252 -0.292911561287176 0.186328065465373 -6.33634902880153e-05 -4.75397471250138e-05 0.200017573445454 3.11382031270568e-05 -1.74359658655643e-05 0.000109879917664646 0.200017589131474 0.000115530069270456
481 0.958000000000001 0.559729765706547 -0.292911656401542 0.186728100832024 -6.33013306494678e-05 -4.75738422961447e-05 0.200017793201668 3.10216158316834e-05 -1.66590699568481e-05 0.00010987538830165 0.200017808876095 0.000115379661184604
482 0.960000000000001 0.559729639165929 -0.292911751582545 0.187128136638179 -6.32394038246886e-05 -4.76063834048412e-05 0.200018012947008 3.09054101754746e-05 -1.58819034312696e-05 0.000109869034009558 0.200018028609571 0.000115232737834818
483 0.962000000000001 0.559729512748932 -0.292911846827076 0.187528172883812 -6.31777090087659e-05 -4.76373699098697e-05 0.200018232677804 3.07896139140062e-05 -1.51045009832984e-05 0.000109860853053645 0.200018248328231 0.000115089327518248
484 0.964000000000001 0.559729386455093 -0.292911942132025 0.187928209568891 -6.31162453690325e-05 -4.76668014087744e-05 0.20001845239042 3.06742339861721e-05 -1.43268764907223e-05 0.000109850850638082 0.200018468028437 0.000114949455877482
485 0.966000000000001 0.559729260283951 -0.292912037494282 0.188328246693374 -6.30550120728212e-05 -4.76946774158326e-05 0.200018672081206 3.05592981475477e-05 -1.35490403618821e-05 0.000109839018089253 0.200018687706539 0.000114813139896136
486 0.968000000000001 0.559729134235045 -0.292912132910735 0.188728284257215 -6.29940081764424e-05 -4.77209975702219e-05 0.200018891746492 3.04447855814516e-05 -1.27710411690351e-05 0.000109825318977963 0.200018907358864 0.000114680360787072
487 0.970000000000001 0.559729008307918 -0.292912228378272 0.18912832226036 -6.29332329304954e-05 -4.77457615805088e-05 0.200019111382482 3.03306685323079e-05 -1.1992910137204e-05 0.000109809753304213 0.200019126981615 0.000114551129492065
488 0.972000000000001 0.559728882502113 -0.292912323893781 0.189528360702745 -6.28726855023131e-05 -4.77689692107707e-05 0.200019330985505 3.02169747556924e-05 -1.12146576747296e-05 0.000109792355762472 0.200019346571121 0.000114425501939126
489 0.974000000000001 0.559728756817176 -0.292912419454149 0.189928399584302 -6.28123650314726e-05 -4.77906202112077e-05 0.200019550551905 3.01036764960294e-05 -1.04362941899527e-05 0.000109773100331889 0.200019566123724 0.000114303460715202
490 0.976000000000001 0.559728631252653 -0.292912515056262 0.190328438904953 -6.2752270796329e-05 -4.78107143875306e-05 0.200019770077907 2.9990766814425e-05 -9.65787172457765e-06 0.000109751971399952 0.200019785635648 0.000114185006925346
491 0.978000000000001 0.559728505808093 -0.292912610697006 0.190728478664614 -6.26924019642149e-05 -4.7829251698106e-05 0.200019989559791 2.98783012220305e-05 -8.87941109528611e-06 0.000109728965497213 0.200020005103173 0.000114070165663078
492 0.980000000000001 0.559728380483045 -0.292912706373269 0.191128518863192 -6.26327575914409e-05 -4.78462320319117e-05 0.200020208993769 2.97662450243763e-05 -8.10092271041895e-06 0.000109704068745886 0.20002022452251 0.000113958926771945
493 0.982000000000001 0.559728255277062 -0.292912802081934 0.191528559500589 -6.25733369841174e-05 -4.78616553889477e-05 0.200020428376066 2.96545635269929e-05 -7.32246555057436e-06 0.000109677295023758 0.200020443889882 0.000113851309537678
494 0.984000000000001 0.559728130189697 -0.29291289781989 0.191928600576696 -6.25141393373329e-05 -4.7875521894114e-05 0.200020647702949 2.95432914243498e-05 -6.54403614630538e-06 0.000109648623514147 0.200020663201556 0.000113747312565244
495 0.986000000000001 0.559728005220505 -0.292912993584022 0.1923286420914 -6.245516381842e-05 -4.78878315335329e-05 0.20002086697056 2.94324425942349e-05 -5.76563796705897e-06 0.00010961805248233 0.200020882453674 0.000113646947553592
496 0.988000000000001 0.559727880369042 -0.292913089371216 0.192728684044579 -6.2396409566956e-05 -4.78985844459822e-05 0.200021086175159 2.93219892810725e-05 -4.98735427956198e-06 0.000109585604479712 0.200021101642493 0.000113550242039782
497 0.990000000000001 0.559727755634867 -0.29291318517836 0.193128726436101 -6.23378758612957e-05 -4.79077809506511e-05 0.200021305312978 2.92119106681809e-05 -4.20919896160221e-06 0.000109551241342376 0.200021320764247 0.000113457161785582
498 0.992000000000001 0.559727631017539 -0.29291328100234 0.193528769265831 -6.22795619242832e-05 -4.79154212418286e-05 0.200021524380124 2.91022483889236e-05 -3.4311546659449e-06 0.000109514923171683 0.200021539815041 0.00011336768534698
499 0.994000000000001 0.559727506516619 -0.292913376840045 0.193928812533622 -6.22214668677401e-05 -4.79215055693149e-05 0.20002174337267 2.89929885655127e-05 -2.65327690374128e-06 0.000109476691600996 0.200021758790948 0.00011328185763037
500 0.996000000000001 0.559727382131671 -0.292913472688362 0.194328856239321 -6.21635899700212e-05 -4.79260343494436e-05 0.200021962286891 2.88841034419423e-05 -1.87560383923987e-06 0.000109436572304222 0.20002197768824 0.000113199702645828
501 0.998000000000001 0.559727257862259 -0.292913568544182 0.194728900382769 -6.21059304539723e-05 -4.79290079846719e-05 0.20002218111896 2.87756138357555e-05 -1.09815975790528e-06 0.000109394486177975 0.200022196503094 0.000113121154134059
502 1 0.559727133707949 -0.292913664404394 0.195128944963797 -6.20484875146782e-05 -4.79304269884752e-05 0.200022399864835 6.47104314581583e-05 1.17001859593062e-05 -0.0248962396563058 0.200022415231465 0.0248963265032917
503 1.002 0.559727009668309 -0.29291376026589 0.195528989982229 -6.18470887281397e-05 -4.78822072408347e-05 0.199922596160334 0.000208561473647326 6.05797356726379e-05 -0.124918854036565 0.199922611460676 0.124919042830152
504 1.004 0.559726886319594 -0.292913855933223 0.195928635348438 -6.12142416200889e-05 -4.76881080457847e-05 0.199522724448689 0.000459439777888981 0.00014546347806843 -0.299958929307967 0.199522739538045 0.299959316434937
505 1.006 0.559726764811343 -0.292913951018322 0.196327080880023 -6.00093296165837e-05 -4.73003533285609e-05 0.198722760443103 0.000743686244530916 0.000241945054268999 -0.500005546889836 0.198722775133022 0.500006158489317
506 1.008 0.559726646282276 -0.292914045134637 0.196723526390211 -5.82394966419652e-05 -4.67203278287087e-05 0.19752270226113 0.00102349224928577 0.000337419873291944 -0.700052949590204 0.197522716372489 0.700053779090221
507 1.01 0.559726531853356 -0.292914137899634 0.197117171689068 -5.59153606194406e-05 -4.59506738353932e-05 0.195922548644742 0.00129711919677477 0.00043125516352438 -0.900100815097448 0.195922562012248 0.900101853035709
508 1.012 0.559726422620833 -0.292914228937332 0.19750721658479 -5.30510198548661e-05 -4.49953071746112e-05 0.19392229900074 0.00156282526503348 0.000522810704450815 -1.10014880104481 0.193922311477356 1.10015003531072
509 1.014 0.559726319649277 -0.292914317880862 0.197892860885071 -4.96640595593067e-05 -4.38594310175899e-05 0.191521953440562 0.00181886569694533 0.000611439794628854 -1.30019654553948 0.191521964901829 1.30019796152887
510 1.016 0.559726223964595 -0.292914404375056 0.198273304398552 -4.57755570670848e-05 -4.25495479960957e-05 0.188721512818582 0.00206349316800302 0.000696490178031526 -1.5002436680768 0.188721523166807 1.50024524885338
511 1.018 0.559726136547048 -0.292914488079054 0.198647746936345 -4.14100868872946e-05 -4.10734703054638e-05 0.185520978768255 0.002294958015292 0.000777305032839679 -1.70028977063662 0.185520987936559 1.70029149711657
512 1.02 0.559726058324248 -0.292914568668937 0.199015388313625 -3.65957250059168e-05 -3.9440327864737e-05 0.181920353736035 0.00251150856361848 0.000853224046970524 -1.90033443890278 0.181920361692227 1.90033629006723
513 1.022 0.559725990164148 -0.292914645840366 0.199375428351289 -3.13640526328207e-05 -3.76605741175817e-05 0.177919641012644 0.0027113915071486 0.000923584472789506 -2.1003772436648 0.177919647762946 2.10037919680164
514 1.024 0.559725932868037 -0.292914719311234 0.199727066877676 -2.57501589773223e-05 -3.5745989973579e-05 0.173518844761376 0.00289285265187011 0.000987722077738781 -2.30041774234613 0.173518850353986 2.30041977332231
515 1.026 0.559725887163512 -0.292914788824326 0.200069503730335 -1.97926420253402e-05 -3.37096858066266e-05 0.16871797004326 0.00305413732498704 0.0010449723482353 -2.50045548068518 0.168717974571798 2.5004575642491
516 1.028 0.559725853697469 -0.292914854149977 0.200401938757849 -1.35336096773741e-05 -3.15661005806378e-05 0.163517022838636 0.00319349088839793 0.0010946715374438 -2.70048999475615 0.16351702644553 2.7004921048705
517 1.03 0.559725833029074 -0.292914915088728 0.200723571821689 -7.01867847174852e-06 -2.93309996568513e-05 0.157916010064235 0.00330915968238531 0.00113615756733298 -2.90052081296579 0.15791601294415 2.90052292317085
518 1.032 0.559725825622755 -0.292914971473976 0.201033602798106 -2.96970947832875e-07 -2.70214703113058e-05 0.151914939586772 0.00339939158766622 0.00116877119787917 -3.10054745819577 0.151914941990249 3.10054954200276
519 1.034 0.55972583184119 -0.292915023174609 0.201331231580036 6.57888787891636e-06 -2.46559148653347e-05 0.145513820231452 0.00346243698989834 0.00119185697075585 -3.30056945031797 0.145513822469026 3.30057148163242
520 1.036 0.559725851938307 -0.292915070097635 0.201615658079031 1.35527770117605e-05 -2.22540424282824e-05 0.1387126617855 0.00349654961928624 0.00120476418424831 -3.50058630869085 0.138712664232718 3.50058826226534
521 1.038 0.559725886052298 -0.292915112190779 0.201886082227178 2.05650863560613e-05 -1.98368581283414e-05 0.131511474996689 0.00349998735549306 0.00120684794102654 -3.70059755486033 0.13151147810069 3.70059940677611
522 1.04 0.559725934198652 -0.292915149445068 0.202141703979018 2.75527264337327e-05 -1.74266506641762e-05 0.123910271566059 0.00347101347664135 0.0011974700987738 -3.90060271541342 0.123910275854811 3.90060444359073
523 1.042 0.559725996263204 -0.292915181897382 0.202381723313443 3.44491402626268e-05 -1.50469777332462e-05 0.115909064135035 0.00340789761688053 0.00117600024163167 -4.10060132499494 0.115909070230998 4.10060290973083
524 1.044 0.559726071995213 -0.292915209632978 0.202605340235558 4.11843169012549e-05 -1.27226496976496e-05 0.107507866266079 0.00329489877742839 0.00113709665294781 -4.2801538298609 0.107507874907371 4.28015524912587
525 1.046 0.559726161000471 -0.29291523278798 0.202811754778507 4.76287353723403e-05 -1.0498591121455e-05 0.0987884488155912 0.00307491947182381 0.00106157932097672 -4.34575395964232 0.0987884608550388 4.34575517716166
526 1.048 0.559726262510155 -0.292915251627343 0.203000494030821 5.34839947885501e-05 -8.47633241374268e-06 0.09012485042751 0.0027336183941462 0.00094485897925156 -4.23827163429507 0.0901248666959733 4.2382726211864
527 1.05 0.55972637493645 -0.29291526669331 0.203172254180217 5.85632089489251e-05 -6.71915520444876e-06 0.0818353622784109 0.00235898493794462 0.000816859906105359 -4.04471370012322 0.0818353835088176 4.04471447052008
528 1.052 0.55972649676299 -0.292915278503964 0.203327835479934 6.29199345403286e-05 -5.20889278932124e-06 0.0739459956270171 0.00201515260034313 0.000699331623860154 -3.84465549212696 0.073946022579457 3.84465608384504
529 1.054 0.559726626616189 -0.292915287528881 0.203468038162725 6.66238193502977e-05 -3.92182870900814e-06 0.0664567403099031 0.00170527032078426 0.00059338974012224 -3.6446023173979 0.0664567738212738 3.64460276464259
530 1.056 0.559726763258268 -0.292915294191279 0.203593662441174 6.97410158234656e-05 -2.83533382883227e-06 0.0593675863574255 0.00142758697224687 0.00049848331365454 -3.4445540629778 0.0593676273886264 3.44455439487709
531 1.058 0.559726905580252 -0.292915298870217 0.203705508508155 7.23341672392851e-05 -1.92789545438998e-06 0.0526785240579918 0.00118034510637743 0.000414047972990827 -3.24451058548481 0.0526785737551517 3.2445108266075
532 1.06 0.559727052594937 -0.29291530190286 0.203804376537406 7.44623962489754e-05 -1.17914193686896e-06 0.0463895440154862 0.000961782119224263 0.000339507880142697 -3.04447171429848 0.0463896037922676 3.04447188514757
533 1.062 0.559727203429837 -0.292915303586784 0.203891066684217 7.61812957161822e-05 -5.69863933819192e-07 0.0405006372007979 0.000770131187988187 0.000274277423689683 -2.84443725456946 0.0405007088528734 2.84443737204967
534 1.064 0.55972735732012 -0.292915304182316 0.203966379086209 7.75429210009281e-05 -8.20322421102303e-08 0.0350117949972084 0.000398973742932185 0.00021421258517007 -2.64440716362356 0.0350118808668982 2.64440720239729
535 1.066 0.559727513601521 -0.292915303914913 0.204031113864205 7.77771906879109e-05 2.86986406861089e-07 0.0299230085463037 -0.00115535531142186 0.000141854781393613 -2.44438170280032 0.0299231096284446 2.4443819799601
536 1.068 0.559727668428882 -0.292915303034371 0.204086071120394 7.29214997552407e-05 4.85386883464222e-07 0.0252342681860071 -0.00401650483705662 5.56669155216126e-05 -2.24435995451258 0.0252343735540246 2.24436354916703
537 1.07 0.55972780528752 -0.292915301973366 0.20413205093695 6.17111713396845e-05 5.0965406894754e-07 0.0209455687282534 -0.00626615419968556 -1.15940174127971e-05 -2.04434003984142 0.0209456596429523 2.04434964311923
538 1.072 0.559727915273568 -0.292915300995754 0.204169853395307 4.78568829564984e-05 4.39010813813034e-07 0.0170569080266414 -0.00686163004193217 -4.41210054602514e-05 -1.84432192848992 0.0170569751686306 1.84433469300511
539 1.074 0.559727996715052 -0.292915300217322 0.204200278569056 3.42646511719557e-05 3.33170047106534e-07 0.0135682810142937 -0.00631623352231879 -5.29287308426162e-05 -1.64430670730048 0.0135683242834244 1.64431883930115
540 1.076 0.559728052332172 -0.292915299663074 0.204224126519365 2.25919488672232e-05 2.27295890442569e-07 0.0104796811974395 -0.00517427409252313 -4.84691488333854e-05 -1.44429475571785 0.0104797055515784 1.44430402507772
541 1.078 0.559728087082847 -0.292915299308139 0.204242197293846 1.35675548018632e-05 1.39293451772993e-07 0.00779110199142229 -0.00383122115282796 -3.79535396166641e-05 -1.24428593613682 0.00779111380604149 1.24429183496633
542 1.08 0.559728106602392 -0.2929152991059 0.20425529092733 7.26706425591139e-06 7.54817319759126e-08 0.00550253745289219 -0.00255506633906055 -2.60802768270451e-05 -1.04427983641311 0.00550254225212326 1.04428296250737
543 1.082 0.559728116151104 -0.292915299006212 0.204264207443657 3.34728944562101e-06 3.4972344464812e-08 0.00361398264576984 -0.00150598635645371 -1.56192385414311e-05 -0.844275922229352 0.00361398419607713 0.844277265532532
544 1.084 0.559728119991549 -0.292915298966011 0.204269746857913 1.24311883009653e-06 1.30047778101883e-08 0.00212543376397478 -0.000754516962797601 -7.88577883548135e-06 -0.644273639664044 0.00212543412755078 0.644274081524305
545 1.086 0.55972812112358 -0.292915298954193 0.204272709178713 3.29221594430606e-07 3.42922912288656e-09 0.00103688808711366 -0.000298867597336993 -3.12933359780664e-06 -0.444272481940274 0.00103688813938479 0.44427258247725
546 1.088 0.559728121308436 -0.292915298952294 0.204273894410262 4.764844074856e-08 4.87443418961675e-10 0.000348343836213682 -8.15881945337436e-05 -8.50951253905661e-07 -0.233204047222351 0.000348343839472835 0.233204061496026
547 1.09 0.559728121314173 -0.292915298952243 0.204274102554058 2.8688162956314e-09 2.54241072639161e-11 0.000104071898224256 -2.23898122264643e-05 -2.31009655848879e-07 -0.122135968994713 0.0001040718982638 0.122135971047168

6501
data/ik_speedl_q.csv Normal file

File diff suppressed because it is too large Load Diff

6501
data/ik_speedl_qd.csv Normal file

File diff suppressed because it is too large Load Diff

6501
data/ik_speedl_tcp.csv Normal file

File diff suppressed because it is too large Load Diff

6501
data/ik_speedl_twist.csv Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -0,0 +1,544 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-6</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,814.51 L1737.59,814.51 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,814.51 L259.71,814.51 '/> <g transform="translate(236.99,819.71)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,667.81 L1737.59,667.81 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,667.81 L259.71,667.81 '/> <g transform="translate(236.99,673.01)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,374.41 L1737.59,374.41 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,374.41 L259.71,374.41 '/> <g transform="translate(236.99,379.61)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,227.71 L1737.59,227.71 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,227.71 L259.71,227.71 '/> <g transform="translate(236.99,232.91)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >6</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(192.41,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >acceleration [m/s</tspan><tspan font-family="Helvetica" font-size="8.8" dy="-5.50px">2</tspan><tspan font-family="Helvetica" font-size="11.0" dy="5.50px">]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,154.36 L532.31,154.36 L534.79,154.36 L537.27,154.36 L539.75,154.36 L542.23,154.36 L544.71,154.36
L547.19,154.36 L549.67,158.03 L552.15,161.69 L554.63,165.36 L557.11,169.03 L559.59,172.70 L562.07,176.36 L564.55,180.03
L567.03,183.70 L569.51,187.37 L571.99,191.03 L574.47,194.70 L576.95,198.37 L579.43,202.04 L581.91,205.70 L584.39,209.37
L586.87,213.04 L589.35,216.71 L591.83,220.37 L594.31,224.04 L596.79,227.71 L599.27,231.38 L601.75,235.04 L604.23,238.71
L606.71,242.38 L609.19,246.05 L611.67,249.71 L614.15,253.38 L616.63,257.05 L619.11,260.72 L621.59,264.38 L624.07,268.05
L626.55,271.72 L629.03,275.39 L631.51,279.05 L633.99,282.72 L636.47,286.39 L638.95,290.06 L641.43,293.72 L643.91,297.39
L646.39,301.06 L648.87,304.73 L651.35,308.39 L653.83,312.06 L656.31,315.73 L658.79,319.40 L661.27,323.06 L663.75,326.73
L666.23,330.40 L668.71,334.07 L671.19,337.73 L673.67,341.40 L676.15,345.07 L678.63,348.74 L681.11,352.40 L683.59,356.07
L686.07,359.74 L688.55,363.41 L691.03,367.07 L693.51,370.74 L695.99,374.41 L698.47,378.08 L700.95,381.74 L703.43,385.41
L705.91,389.08 L708.39,392.75 L710.87,396.41 L713.35,400.08 L715.83,403.75 L718.31,407.42 L720.79,411.08 L723.27,414.75
L725.75,418.42 L728.23,422.09 L730.71,425.75 L733.19,429.42 L735.67,433.09 L738.15,436.76 L740.63,440.42 L743.11,444.09
L745.59,447.76 L748.07,451.43 L750.55,455.09 L753.03,458.76 L755.51,462.43 L757.99,466.10 L760.47,469.76 L762.95,473.43
L765.43,477.10 L767.91,480.77 L770.39,484.43 L772.87,488.10 L775.35,491.77 L777.83,495.44 L780.31,499.10 L782.79,502.77
L785.27,506.44 L787.75,510.11 L790.23,513.77 L792.71,517.44 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,521.11 L1072.95,521.11 L1075.43,521.11 L1077.91,523.55 L1080.39,527.22
L1082.87,530.89 L1085.35,534.56 L1087.83,538.22 L1090.31,541.89 L1092.79,545.56 L1095.27,549.23 L1097.75,552.89 L1100.23,556.56
L1102.71,560.23 L1105.19,563.90 L1107.67,567.56 L1110.15,571.23 L1112.63,574.90 L1115.11,578.57 L1117.59,582.23 L1120.07,585.90
L1122.55,589.57 L1125.03,593.24 L1127.51,596.90 L1129.99,600.57 L1132.47,604.24 L1134.95,607.91 L1137.43,611.57 L1139.91,615.24
L1142.39,618.91 L1144.87,622.58 L1147.35,626.24 L1149.83,629.91 L1152.31,633.58 L1154.79,637.25 L1157.27,640.91 L1159.75,644.58
L1162.23,648.25 L1164.71,651.92 L1167.19,655.58 L1169.67,659.25 L1172.15,662.92 L1174.63,666.59 L1177.11,670.25 L1179.59,673.92
L1182.07,677.59 L1184.55,681.26 L1187.03,684.92 L1189.51,688.59 L1191.99,692.26 L1194.47,695.93 L1196.95,699.59 L1199.43,703.26
L1201.91,706.93 L1204.39,710.60 L1206.87,714.26 L1209.35,717.93 L1211.83,721.60 L1214.31,725.27 L1216.79,728.93 L1219.27,732.60
L1221.75,736.27 L1224.23,739.94 L1226.71,743.60 L1229.19,747.27 L1231.67,750.94 L1234.15,754.61 L1236.63,758.27 L1239.11,761.94
L1241.59,765.61 L1244.07,769.28 L1246.55,772.94 L1249.03,776.61 L1251.51,780.28 L1253.99,783.95 L1256.47,787.61 L1258.95,791.28
L1261.43,794.95 L1263.91,798.62 L1266.39,802.28 L1268.87,805.95 L1271.35,809.62 L1273.83,813.29 L1276.31,816.95 L1278.79,820.62
L1281.27,824.29 L1283.75,827.96 L1286.23,831.62 L1288.71,835.29 L1291.19,838.96 L1293.67,842.63 L1296.15,846.29 L1298.63,849.96
L1301.11,853.63 L1303.59,857.30 L1306.07,860.96 L1308.55,864.63 L1311.03,868.30 L1313.51,871.97 L1315.99,875.63 L1318.47,879.30
L1320.95,882.97 L1323.43,886.64 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,887.86 L1350.71,887.86 L1353.19,887.86 L1355.67,887.86 L1358.15,887.86
L1360.63,887.86 L1363.11,887.86 L1365.59,887.86 L1368.07,887.86 L1370.55,887.86 L1373.03,887.86 L1375.51,885.42 L1377.99,881.75
L1380.47,878.08 L1382.95,874.41 L1385.43,870.75 L1387.91,867.08 L1390.39,863.41 L1392.87,859.74 L1395.35,856.08 L1397.83,852.41
L1400.31,848.74 L1402.79,845.07 L1405.27,841.41 L1407.75,837.74 L1410.23,834.07 L1412.71,830.40 L1415.19,826.74 L1417.67,823.07
L1420.15,819.40 L1422.63,815.73 L1425.11,812.07 L1427.59,808.40 L1430.07,804.73 L1432.55,801.06 L1435.03,797.40 L1437.51,793.73
L1439.99,790.06 L1442.47,786.39 L1444.95,782.73 L1447.43,779.06 L1449.91,775.39 L1452.39,771.72 L1454.87,768.06 L1457.35,764.39
L1459.83,760.72 L1462.31,757.05 L1464.79,753.39 L1467.27,749.72 L1469.75,746.05 L1472.23,742.38 L1474.71,738.72 L1477.19,735.05
L1479.67,731.38 L1482.15,727.71 L1484.63,724.05 L1487.11,720.38 L1489.59,716.71 L1492.07,713.04 L1494.55,709.38 L1497.03,705.71
L1499.51,702.04 L1501.99,698.37 L1504.47,694.71 L1506.95,691.04 L1509.43,687.37 L1511.91,683.70 L1514.39,680.04 L1516.87,676.37
L1519.35,672.70 L1521.83,669.03 L1524.31,665.37 L1526.79,661.70 L1529.27,658.03 L1531.75,654.36 L1534.23,650.70 L1536.71,647.03
L1539.19,643.36 L1541.67,639.69 L1544.15,636.03 L1546.63,632.36 L1549.11,628.69 L1551.59,625.02 L1554.07,621.36 L1556.55,617.69
L1559.03,614.02 L1561.51,610.35 L1563.99,606.69 L1566.47,603.02 L1568.95,599.35 L1571.43,595.68 L1573.91,592.02 L1576.39,588.35
L1578.87,584.68 L1581.35,581.01 L1583.83,577.35 L1586.31,573.68 L1588.79,570.01 L1591.27,566.34 L1593.75,562.68 L1596.23,559.01
L1598.71,555.34 L1601.19,551.67 L1603.67,548.01 L1606.15,544.34 L1608.63,540.67 L1611.11,537.00 L1613.59,533.34 L1616.07,529.67
L1618.55,526.00 L1621.03,522.33 L1621.86,521.11 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,154.36 L532.31,154.36 L534.79,154.36 L537.27,154.36 L539.75,154.36 L542.23,154.36 L544.71,154.36
L547.19,154.36 L549.67,158.03 L552.15,161.69 L554.63,165.36 L557.11,169.03 L559.59,172.70 L562.07,176.36 L564.55,180.03
L567.03,183.70 L569.51,187.37 L571.99,191.03 L574.47,194.70 L576.95,198.37 L579.43,202.04 L581.91,205.70 L584.39,209.37
L586.87,213.04 L589.35,216.71 L591.83,220.37 L594.31,224.04 L596.79,227.71 L599.27,231.38 L601.75,235.04 L604.23,238.71
L606.71,242.38 L609.19,246.05 L611.67,249.71 L614.15,253.38 L616.63,257.05 L619.11,260.72 L621.59,264.38 L624.07,268.05
L626.55,271.72 L629.03,275.39 L631.51,279.05 L633.99,282.72 L636.47,286.39 L638.95,290.06 L641.43,293.72 L643.91,297.39
L646.39,301.06 L648.87,304.73 L651.35,308.39 L653.83,312.06 L656.31,315.73 L658.79,319.40 L661.27,323.06 L663.75,326.73
L666.23,330.40 L668.71,334.07 L671.19,337.73 L673.67,341.40 L676.15,345.07 L678.63,348.74 L681.11,352.40 L683.59,356.07
L686.07,359.74 L688.55,363.41 L691.03,367.07 L693.51,370.74 L695.99,374.41 L698.47,378.08 L700.95,381.74 L703.43,385.41
L705.91,389.08 L708.39,392.75 L710.87,396.41 L713.35,400.08 L715.83,403.75 L718.31,407.42 L720.79,411.08 L723.27,414.75
L725.75,418.42 L728.23,422.09 L730.71,425.75 L733.19,429.42 L735.67,433.09 L738.15,436.76 L740.63,440.42 L743.11,444.09
L745.59,447.76 L748.07,451.43 L750.55,455.09 L753.03,458.76 L755.51,462.43 L757.99,466.10 L760.47,469.76 L762.95,473.43
L765.43,477.10 L767.91,480.77 L770.39,484.43 L772.87,488.10 L775.35,491.77 L777.83,495.44 L780.31,499.10 L782.79,502.77
L785.27,506.44 L787.75,510.11 L790.23,513.77 L792.71,517.44 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,523.80 L1072.95,527.47 L1075.43,531.13 L1077.91,534.80 L1080.39,538.47
L1082.87,542.14 L1085.35,545.80 L1087.83,549.47 L1090.31,553.14 L1092.79,556.81 L1095.27,560.47 L1097.75,564.14 L1100.23,567.81
L1102.71,571.48 L1105.19,575.14 L1107.67,578.81 L1110.15,582.48 L1112.63,586.15 L1115.11,589.81 L1117.59,593.48 L1120.07,597.15
L1122.55,600.82 L1125.03,604.48 L1127.51,608.15 L1129.99,611.82 L1132.47,615.49 L1134.95,619.15 L1137.43,622.82 L1139.91,626.49
L1142.39,630.16 L1144.87,633.82 L1147.35,637.49 L1149.83,641.16 L1152.31,644.83 L1154.79,648.49 L1157.27,652.16 L1159.75,655.83
L1162.23,659.50 L1164.71,663.16 L1167.19,666.83 L1169.67,670.50 L1172.15,674.17 L1174.63,677.83 L1177.11,681.50 L1179.59,685.17
L1182.07,688.84 L1184.55,692.50 L1187.03,696.17 L1189.51,699.84 L1191.99,703.51 L1194.47,707.17 L1196.95,710.84 L1199.43,714.51
L1201.91,718.18 L1204.39,721.84 L1206.87,725.51 L1209.35,729.18 L1211.83,732.85 L1214.31,736.51 L1216.79,740.18 L1219.27,743.85
L1221.75,747.52 L1224.23,751.18 L1226.71,754.85 L1229.19,758.52 L1231.67,762.19 L1234.15,765.85 L1236.63,769.52 L1239.11,773.19
L1241.59,776.86 L1244.07,780.52 L1246.55,784.19 L1249.03,787.86 L1251.51,791.53 L1253.99,795.19 L1256.47,798.86 L1258.95,802.53
L1261.43,806.20 L1263.91,809.86 L1266.39,813.53 L1268.87,817.20 L1271.35,820.87 L1273.83,824.53 L1276.31,828.20 L1278.79,831.87
L1281.27,835.54 L1283.75,839.20 L1286.23,842.87 L1288.71,846.54 L1291.19,850.21 L1293.67,853.87 L1296.15,857.54 L1298.63,861.21
L1301.11,864.88 L1303.59,868.54 L1306.07,872.21 L1308.55,875.88 L1311.03,879.55 L1313.51,883.21 L1315.99,886.88 L1318.47,887.86
L1320.95,887.86 L1323.43,887.86 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,885.17 L1350.71,881.50 L1353.19,877.84 L1355.67,874.17 L1358.15,870.50
L1360.63,866.83 L1363.11,863.17 L1365.59,859.50 L1368.07,855.83 L1370.55,852.16 L1373.03,848.50 L1375.51,844.83 L1377.99,841.16
L1380.47,837.49 L1382.95,833.83 L1385.43,830.16 L1387.91,826.49 L1390.39,822.82 L1392.87,819.16 L1395.35,815.49 L1397.83,811.82
L1400.31,808.15 L1402.79,804.49 L1405.27,800.82 L1407.75,797.15 L1410.23,793.48 L1412.71,789.82 L1415.19,786.15 L1417.67,782.48
L1420.15,778.81 L1422.63,775.15 L1425.11,771.48 L1427.59,767.81 L1430.07,764.14 L1432.55,760.48 L1435.03,756.81 L1437.51,753.14
L1439.99,749.47 L1442.47,745.81 L1444.95,742.14 L1447.43,738.47 L1449.91,734.80 L1452.39,731.14 L1454.87,727.47 L1457.35,723.80
L1459.83,720.13 L1462.31,716.47 L1464.79,712.80 L1467.27,709.13 L1469.75,705.46 L1472.23,701.80 L1474.71,698.13 L1477.19,694.46
L1479.67,690.79 L1482.15,687.13 L1484.63,683.46 L1487.11,679.79 L1489.59,676.12 L1492.07,672.46 L1494.55,668.79 L1497.03,665.12
L1499.51,661.45 L1501.99,657.79 L1504.47,654.12 L1506.95,650.45 L1509.43,646.78 L1511.91,643.12 L1514.39,639.45 L1516.87,635.78
L1519.35,632.11 L1521.83,628.45 L1524.31,624.78 L1526.79,621.11 L1529.27,617.44 L1531.75,613.78 L1534.23,610.11 L1536.71,606.44
L1539.19,602.77 L1541.67,599.11 L1544.15,595.44 L1546.63,591.77 L1549.11,588.10 L1551.59,584.44 L1554.07,580.77 L1556.55,577.10
L1559.03,573.43 L1561.51,569.77 L1563.99,566.10 L1566.47,562.43 L1568.95,558.76 L1571.43,555.10 L1573.91,551.43 L1576.39,547.76
L1578.87,544.09 L1581.35,540.43 L1583.83,536.76 L1586.31,533.09 L1588.79,529.42 L1591.27,525.76 L1593.75,522.09 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,158.03 L532.31,161.69 L534.79,165.36 L537.27,169.03 L539.75,172.70 L542.23,176.36 L544.71,180.03
L547.19,183.70 L549.67,187.37 L552.15,191.03 L554.63,194.70 L557.11,198.37 L559.59,202.04 L562.07,205.70 L564.55,209.37
L567.03,213.04 L569.51,216.71 L571.99,220.37 L574.47,224.04 L576.95,227.71 L579.43,231.38 L581.91,235.04 L584.39,238.71
L586.87,242.38 L589.35,246.05 L591.83,249.71 L594.31,253.38 L596.79,257.05 L599.27,260.72 L601.75,264.38 L604.23,268.05
L606.71,271.72 L609.19,275.39 L611.67,279.05 L614.15,282.72 L616.63,286.39 L619.11,290.06 L621.59,293.72 L624.07,297.39
L626.55,301.06 L629.03,304.73 L631.51,308.39 L633.99,312.06 L636.47,315.73 L638.95,319.40 L641.43,323.06 L643.91,326.73
L646.39,330.40 L648.87,334.07 L651.35,337.73 L653.83,341.40 L656.31,345.07 L658.79,348.74 L661.27,352.40 L663.75,356.07
L666.23,359.74 L668.71,363.41 L671.19,367.07 L673.67,370.74 L676.15,374.41 L678.63,378.08 L681.11,381.74 L683.59,385.41
L686.07,389.08 L688.55,392.75 L691.03,396.41 L693.51,400.08 L695.99,403.75 L698.47,407.42 L700.95,411.08 L703.43,414.75
L705.91,418.42 L708.39,422.09 L710.87,425.75 L713.35,429.42 L715.83,433.09 L718.31,436.76 L720.79,440.42 L723.27,444.09
L725.75,447.76 L728.23,451.43 L730.71,455.09 L733.19,458.76 L735.67,462.43 L738.15,466.10 L740.63,469.76 L743.11,473.43
L745.59,477.10 L748.07,480.77 L750.55,484.43 L753.03,488.10 L755.51,491.77 L757.99,495.44 L760.47,499.10 L762.95,502.77
L765.43,506.44 L767.91,510.11 L770.39,513.77 L772.87,517.44 L775.35,521.11 L777.83,521.11 L780.31,521.11 L782.79,521.11
L785.27,521.11 L787.75,521.11 L790.23,521.11 L792.71,521.11 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,523.80 L1053.11,527.47 L1055.59,531.13 L1058.07,534.80 L1060.55,538.47
L1063.03,542.14 L1065.51,545.80 L1067.99,549.47 L1070.47,553.14 L1072.95,556.81 L1075.43,560.47 L1077.91,564.14 L1080.39,567.81
L1082.87,571.48 L1085.35,575.14 L1087.83,578.81 L1090.31,582.48 L1092.79,586.15 L1095.27,589.81 L1097.75,593.48 L1100.23,597.15
L1102.71,600.82 L1105.19,604.48 L1107.67,608.15 L1110.15,611.82 L1112.63,615.49 L1115.11,619.15 L1117.59,622.82 L1120.07,626.49
L1122.55,630.16 L1125.03,633.82 L1127.51,637.49 L1129.99,641.16 L1132.47,644.83 L1134.95,648.49 L1137.43,652.16 L1139.91,655.83
L1142.39,659.50 L1144.87,663.16 L1147.35,666.83 L1149.83,670.50 L1152.31,674.17 L1154.79,677.83 L1157.27,681.50 L1159.75,685.17
L1162.23,688.84 L1164.71,692.50 L1167.19,696.17 L1169.67,699.84 L1172.15,703.51 L1174.63,707.17 L1177.11,710.84 L1179.59,714.51
L1182.07,718.18 L1184.55,721.84 L1187.03,725.51 L1189.51,729.18 L1191.99,732.85 L1194.47,736.51 L1196.95,740.18 L1199.43,743.85
L1201.91,747.52 L1204.39,751.18 L1206.87,754.85 L1209.35,758.52 L1211.83,762.19 L1214.31,765.85 L1216.79,769.52 L1219.27,773.19
L1221.75,776.86 L1224.23,780.52 L1226.71,784.19 L1229.19,787.86 L1231.67,791.53 L1234.15,795.19 L1236.63,798.86 L1239.11,802.53
L1241.59,806.20 L1244.07,809.86 L1246.55,813.53 L1249.03,817.20 L1251.51,820.87 L1253.99,824.53 L1256.47,828.20 L1258.95,831.87
L1261.43,835.54 L1263.91,839.20 L1266.39,842.87 L1268.87,846.54 L1271.35,850.21 L1273.83,853.87 L1276.31,857.54 L1278.79,861.21
L1281.27,864.88 L1283.75,868.54 L1286.23,872.21 L1288.71,875.88 L1291.19,879.55 L1293.67,883.21 L1296.15,886.88 L1298.63,887.86
L1301.11,887.86 L1303.59,887.86 L1306.07,887.86 L1308.55,887.86 L1311.03,887.86 L1313.51,887.86 L1315.99,887.86 L1318.47,887.86
L1320.95,887.86 L1323.43,887.86 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,885.17 L1350.71,881.50 L1353.19,877.84 L1355.67,874.17 L1358.15,870.50
L1360.63,866.83 L1363.11,863.17 L1365.59,859.50 L1368.07,855.83 L1370.55,852.16 L1373.03,848.50 L1375.51,844.83 L1377.99,841.16
L1380.47,837.49 L1382.95,833.83 L1385.43,830.16 L1387.91,826.49 L1390.39,822.82 L1392.87,819.16 L1395.35,815.49 L1397.83,811.82
L1400.31,808.15 L1402.79,804.49 L1405.27,800.82 L1407.75,797.15 L1410.23,793.48 L1412.71,789.82 L1415.19,786.15 L1417.67,782.48
L1420.15,778.81 L1422.63,775.15 L1425.11,771.48 L1427.59,767.81 L1430.07,764.14 L1432.55,760.48 L1435.03,756.81 L1437.51,753.14
L1439.99,749.47 L1442.47,745.81 L1444.95,742.14 L1447.43,738.47 L1449.91,734.80 L1452.39,731.14 L1454.87,727.47 L1457.35,723.80
L1459.83,720.13 L1462.31,716.47 L1464.79,712.80 L1467.27,709.13 L1469.75,705.46 L1472.23,701.80 L1474.71,698.13 L1477.19,694.46
L1479.67,690.79 L1482.15,687.13 L1484.63,683.46 L1487.11,679.79 L1489.59,676.12 L1492.07,672.46 L1494.55,668.79 L1497.03,665.12
L1499.51,661.45 L1501.99,657.79 L1504.47,654.12 L1506.95,650.45 L1509.43,646.78 L1511.91,643.12 L1514.39,639.45 L1516.87,635.78
L1519.35,632.11 L1521.83,628.45 L1524.31,624.78 L1526.79,621.11 L1529.27,617.44 L1531.75,613.78 L1534.23,610.11 L1536.71,606.44
L1539.19,602.77 L1541.67,599.11 L1544.15,595.44 L1546.63,591.77 L1549.11,588.10 L1551.59,584.44 L1554.07,580.77 L1556.55,577.10
L1559.03,573.43 L1561.51,569.77 L1563.99,566.10 L1566.47,562.43 L1568.95,558.76 L1571.43,555.10 L1573.91,551.43 L1576.39,547.76
L1578.87,544.09 L1581.35,540.43 L1583.83,536.76 L1586.31,533.09 L1588.79,529.42 L1591.27,525.76 L1593.75,522.09 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Acceleration</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

BIN
data/s_curve_jerk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

518
data/s_curve_jerk.svg Normal file
View File

@ -0,0 +1,518 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-10</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,741.16 L1737.59,741.16 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,741.16 L259.71,741.16 '/> <g transform="translate(236.99,746.36)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,301.06 L1737.59,301.06 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,301.06 L259.71,301.06 '/> <g transform="translate(236.99,306.26)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >10</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(179.81,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >jerk [m/s</tspan><tspan font-family="Helvetica" font-size="8.8" dy="-5.50px">3</tspan><tspan font-family="Helvetica" font-size="11.0" dy="5.50px">]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,521.11 L529.83,521.11 L532.31,521.11 L534.79,521.11 L537.27,521.11 L539.75,521.11 L542.23,521.11 L544.71,521.11
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,961.21 L777.83,961.21 L780.31,961.21 L782.79,961.21
L785.27,961.21 L787.75,961.21 L790.23,961.21 L792.71,961.21 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,521.11 L1072.95,521.11 L1075.43,521.11 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,961.21
L1301.11,961.21 L1303.59,961.21 L1306.07,961.21 L1308.55,961.21 L1311.03,961.21 L1313.51,961.21 L1315.99,961.21 L1318.47,961.21
L1320.95,961.21 L1323.43,961.21 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,521.11 L1350.71,521.11 L1353.19,521.11 L1355.67,521.11 L1358.15,521.11
L1360.63,521.11 L1363.11,521.11 L1365.59,521.11 L1368.07,521.11 L1370.55,521.11 L1373.03,521.11 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1596.23,81.01
L1598.71,81.01 L1601.19,81.01 L1603.67,81.01 L1606.15,81.01 L1608.63,81.01 L1611.11,81.01 L1613.59,81.01 L1616.07,81.01
L1618.55,81.01 L1621.03,81.01 L1621.86,521.11 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,521.11 L529.83,521.11 L532.31,521.11 L534.79,521.11 L537.27,521.11 L539.75,521.11 L542.23,521.11 L544.71,521.11
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,961.21 L777.83,961.21 L780.31,961.21 L782.79,961.21
L785.27,961.21 L787.75,961.21 L790.23,961.21 L792.71,961.21 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,961.21 L1072.95,961.21 L1075.43,961.21 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,961.21
L1301.11,961.21 L1303.59,961.21 L1306.07,961.21 L1308.55,961.21 L1311.03,961.21 L1313.51,961.21 L1315.99,961.21 L1318.47,521.11
L1320.95,521.11 L1323.43,521.11 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,81.01 L1350.71,81.01 L1353.19,81.01 L1355.67,81.01 L1358.15,81.01
L1360.63,81.01 L1363.11,81.01 L1365.59,81.01 L1368.07,81.01 L1370.55,81.01 L1373.03,81.01 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,961.21 L529.83,961.21 L532.31,961.21 L534.79,961.21 L537.27,961.21 L539.75,961.21 L542.23,961.21 L544.71,961.21
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,521.11 L777.83,521.11 L780.31,521.11 L782.79,521.11
L785.27,521.11 L787.75,521.11 L790.23,521.11 L792.71,521.11 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,961.21 L1053.11,961.21 L1055.59,961.21 L1058.07,961.21 L1060.55,961.21
L1063.03,961.21 L1065.51,961.21 L1067.99,961.21 L1070.47,961.21 L1072.95,961.21 L1075.43,961.21 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,521.11
L1301.11,521.11 L1303.59,521.11 L1306.07,521.11 L1308.55,521.11 L1311.03,521.11 L1313.51,521.11 L1315.99,521.11 L1318.47,521.11
L1320.95,521.11 L1323.43,521.11 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,81.01 L1350.71,81.01 L1353.19,81.01 L1355.67,81.01 L1358.15,81.01
L1360.63,81.01 L1363.11,81.01 L1365.59,81.01 L1368.07,81.01 L1370.55,81.01 L1373.03,81.01 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Jerk</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

BIN
data/s_curve_position.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

531
data/s_curve_position.svg Normal file
View File

@ -0,0 +1,531 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,785.17 L1737.59,785.17 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,785.17 L259.71,785.17 '/> <g transform="translate(236.99,790.37)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,609.13 L1737.59,609.13 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,609.13 L259.71,609.13 '/> <g transform="translate(236.99,614.33)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,433.09 L1737.59,433.09 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,433.09 L259.71,433.09 '/> <g transform="translate(236.99,438.29)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,257.05 L1737.59,257.05 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,257.05 L259.71,257.05 '/> <g transform="translate(236.99,262.25)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(205.01,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >position [m]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,961.21 L252.07,961.21 L254.55,961.21 L257.03,961.21 L259.51,961.21 L261.99,961.21 L264.47,961.20 L266.95,961.20
L269.43,961.19 L271.91,961.18 L274.39,961.17 L276.87,961.16 L279.35,961.15 L281.83,961.13 L284.31,961.11 L286.79,961.09
L289.27,961.06 L291.75,961.03 L294.23,961.00 L296.71,960.96 L299.19,960.92 L301.67,960.87 L304.15,960.82 L306.63,960.76
L309.11,960.70 L311.59,960.64 L314.07,960.57 L316.55,960.49 L319.03,960.40 L321.51,960.32 L323.99,960.22 L326.47,960.12
L328.95,960.01 L331.43,959.89 L333.91,959.77 L336.39,959.64 L338.87,959.50 L341.35,959.35 L343.83,959.20 L346.31,959.03
L348.79,958.86 L351.27,958.68 L353.75,958.49 L356.23,958.29 L358.71,958.09 L361.19,957.87 L363.67,957.64 L366.15,957.40
L368.63,957.15 L371.11,956.90 L373.59,956.63 L376.07,956.35 L378.55,956.05 L381.03,955.75 L383.51,955.44 L385.99,955.11
L388.47,954.77 L390.95,954.42 L393.43,954.05 L395.91,953.68 L398.39,953.29 L400.87,952.89 L403.35,952.47 L405.83,952.04
L408.31,951.60 L410.79,951.14 L413.27,950.67 L415.75,950.18 L418.23,949.68 L420.71,949.16 L423.19,948.63 L425.67,948.08
L428.15,947.52 L430.63,946.94 L433.11,946.35 L435.59,945.74 L438.07,945.11 L440.55,944.47 L443.03,943.81 L445.51,943.13
L447.99,942.43 L450.47,941.72 L452.95,940.99 L455.43,940.24 L457.91,939.47 L460.39,938.69 L462.87,937.88 L465.35,937.06
L467.83,936.22 L470.31,935.36 L472.79,934.47 L475.27,933.57 L477.75,932.65 L480.23,931.71 L482.71,930.75 L485.19,929.77
L487.67,928.76 L490.15,927.74 L492.63,926.69 L495.11,925.62 L497.59,924.54 L500.07,923.42 L502.55,922.29 L505.03,921.14
L507.51,919.96 L509.99,918.76 L512.47,917.54 L514.95,916.29 L517.43,915.03 L519.91,913.74 L522.39,912.43 L524.87,911.10
L527.35,909.75 L529.83,908.37 L532.31,906.98 L534.79,905.56 L537.27,904.11 L539.75,902.65 L542.23,901.17 L544.71,899.66
L547.19,898.13 L549.67,896.58 L552.15,895.00 L554.63,893.41 L557.11,891.79 L559.59,890.16 L562.07,888.50 L564.55,886.82
L567.03,885.12 L569.51,883.40 L571.99,881.66 L574.47,879.90 L576.95,878.12 L579.43,876.33 L581.91,874.51 L584.39,872.67
L586.87,870.82 L589.35,868.94 L591.83,867.05 L594.31,865.14 L596.79,863.21 L599.27,861.27 L601.75,859.31 L604.23,857.33
L606.71,855.33 L609.19,853.32 L611.67,851.29 L614.15,849.24 L616.63,847.18 L619.11,845.10 L621.59,843.01 L624.07,840.90
L626.55,838.77 L629.03,836.63 L631.51,834.48 L633.99,832.31 L636.47,830.13 L638.95,827.93 L641.43,825.72 L643.91,823.50
L646.39,821.26 L648.87,819.01 L651.35,816.74 L653.83,814.47 L656.31,812.18 L658.79,809.88 L661.27,807.56 L663.75,805.24
L666.23,802.90 L668.71,800.55 L671.19,798.19 L673.67,795.82 L676.15,793.44 L678.63,791.04 L681.11,788.64 L683.59,786.23
L686.07,783.81 L688.55,781.37 L691.03,778.93 L693.51,776.48 L695.99,774.02 L698.47,771.55 L700.95,769.07 L703.43,766.59
L705.91,764.09 L708.39,761.59 L710.87,759.08 L713.35,756.57 L715.83,754.04 L718.31,751.51 L720.79,748.97 L723.27,746.43
L725.75,743.88 L728.23,741.32 L730.71,738.76 L733.19,736.19 L735.67,733.61 L738.15,731.03 L740.63,728.45 L743.11,725.86
L745.59,723.26 L748.07,720.66 L750.55,718.06 L753.03,715.45 L755.51,712.84 L757.99,710.23 L760.47,707.61 L762.95,704.99
L765.43,702.37 L767.91,699.74 L770.39,697.11 L772.87,694.48 L775.35,691.85 L777.83,689.22 L780.31,686.58 L782.79,683.94
L785.27,681.30 L787.75,678.66 L790.23,676.02 L792.71,673.38 L795.19,670.74 L797.67,668.10 L800.15,665.46 L802.63,662.82
L805.11,660.18 L807.59,657.54 L810.07,654.90 L812.55,652.26 L815.03,649.62 L817.51,646.98 L819.99,644.34 L822.47,641.70
L824.95,639.06 L827.43,636.42 L829.91,633.78 L832.39,631.13 L834.87,628.49 L837.35,625.85 L839.83,623.21 L842.31,620.57
L844.79,617.93 L847.27,615.29 L849.75,612.65 L852.23,610.01 L854.71,607.37 L857.19,604.73 L859.67,602.09 L862.15,599.45
L864.63,596.81 L867.11,594.17 L869.59,591.53 L872.07,588.89 L874.55,586.24 L877.03,583.60 L879.51,580.96 L881.99,578.32
L884.47,575.68 L886.95,573.04 L889.43,570.40 L891.91,567.76 L894.39,565.12 L896.87,562.48 L899.35,559.84 L901.83,557.20
L904.31,554.56 L906.79,551.92 L909.27,549.28 L911.75,546.64 L914.23,544.00 L916.71,541.35 L919.19,538.71 L921.67,536.07
L924.15,533.43 L926.63,530.79 L929.11,528.15 L931.59,525.51 L934.07,522.87 L936.55,520.23 L939.03,517.59 L941.51,514.95
L943.99,512.31 L946.47,509.67 L948.95,507.03 L951.43,504.39 L953.91,501.75 L956.39,499.10 L958.87,496.46 L961.35,493.82
L963.83,491.18 L966.31,488.54 L968.79,485.90 L971.27,483.26 L973.75,480.62 L976.23,477.98 L978.71,475.34 L981.19,472.70
L983.67,470.06 L986.15,467.42 L988.63,464.78 L991.11,462.14 L993.59,459.50 L996.07,456.86 L998.55,454.21 L1001.03,451.57
L1003.51,448.93 L1005.99,446.29 L1008.47,443.65 L1010.95,441.01 L1013.43,438.37 L1015.91,435.73 L1018.39,433.09 L1020.87,430.45
L1023.35,427.81 L1025.83,425.17 L1028.31,422.53 L1030.79,419.89 L1033.27,417.25 L1035.75,414.61 L1038.23,411.97 L1040.71,409.32
L1043.19,406.68 L1045.67,404.04 L1048.15,401.40 L1050.63,398.76 L1053.11,396.12 L1055.59,393.48 L1058.07,390.84 L1060.55,388.20
L1063.03,385.56 L1065.51,382.92 L1067.99,380.28 L1070.47,377.64 L1072.95,375.00 L1075.43,372.36 L1077.91,369.72 L1080.39,367.08
L1082.87,364.44 L1085.35,361.80 L1087.83,359.16 L1090.31,356.52 L1092.79,353.88 L1095.27,351.25 L1097.75,348.61 L1100.23,345.98
L1102.71,343.35 L1105.19,340.73 L1107.67,338.10 L1110.15,335.48 L1112.63,332.86 L1115.11,330.25 L1117.59,327.64 L1120.07,325.03
L1122.55,322.42 L1125.03,319.82 L1127.51,317.23 L1129.99,314.64 L1132.47,312.05 L1134.95,309.47 L1137.43,306.89 L1139.91,304.32
L1142.39,301.76 L1144.87,299.20 L1147.35,296.64 L1149.83,294.10 L1152.31,291.56 L1154.79,289.02 L1157.27,286.49 L1159.75,283.98
L1162.23,281.46 L1164.71,278.96 L1167.19,276.46 L1169.67,273.97 L1172.15,271.49 L1174.63,269.02 L1177.11,266.56 L1179.59,264.10
L1182.07,261.66 L1184.55,259.22 L1187.03,256.80 L1189.51,254.38 L1191.99,251.98 L1194.47,249.58 L1196.95,247.19 L1199.43,244.82
L1201.91,242.46 L1204.39,240.10 L1206.87,237.76 L1209.35,235.43 L1211.83,233.11 L1214.31,230.81 L1216.79,228.52 L1219.27,226.23
L1221.75,223.97 L1224.23,221.71 L1226.71,219.47 L1229.19,217.24 L1231.67,215.02 L1234.15,212.82 L1236.63,210.63 L1239.11,208.46
L1241.59,206.30 L1244.07,204.16 L1246.55,202.03 L1249.03,199.91 L1251.51,197.82 L1253.99,195.73 L1256.47,193.67 L1258.95,191.61
L1261.43,189.58 L1263.91,187.56 L1266.39,185.56 L1268.87,183.57 L1271.35,181.60 L1273.83,179.65 L1276.31,177.72 L1278.79,175.80
L1281.27,173.91 L1283.75,172.03 L1286.23,170.16 L1288.71,168.32 L1291.19,166.50 L1293.67,164.69 L1296.15,162.91 L1298.63,161.14
L1301.11,159.40 L1303.59,157.67 L1306.07,155.96 L1308.55,154.28 L1311.03,152.61 L1313.51,150.97 L1315.99,149.35 L1318.47,147.74
L1320.95,146.16 L1323.43,144.61 L1325.91,143.07 L1328.39,141.55 L1330.87,140.06 L1333.35,138.59 L1335.83,137.14 L1338.31,135.72
L1340.79,134.31 L1343.27,132.93 L1345.75,131.57 L1348.23,130.23 L1350.71,128.91 L1353.19,127.62 L1355.67,126.35 L1358.15,125.09
L1360.63,123.87 L1363.11,122.66 L1365.59,121.47 L1368.07,120.31 L1370.55,119.17 L1373.03,118.05 L1375.51,116.96 L1377.99,115.88
L1380.47,114.83 L1382.95,113.80 L1385.43,112.79 L1387.91,111.80 L1390.39,110.83 L1392.87,109.88 L1395.35,108.95 L1397.83,108.04
L1400.31,107.16 L1402.79,106.29 L1405.27,105.44 L1407.75,104.61 L1410.23,103.80 L1412.71,103.01 L1415.19,102.23 L1417.67,101.48
L1420.15,100.74 L1422.63,100.02 L1425.11,99.32 L1427.59,98.64 L1430.07,97.97 L1432.55,97.32 L1435.03,96.69 L1437.51,96.07
L1439.99,95.47 L1442.47,94.89 L1444.95,94.32 L1447.43,93.77 L1449.91,93.23 L1452.39,92.71 L1454.87,92.21 L1457.35,91.71
L1459.83,91.24 L1462.31,90.78 L1464.79,90.33 L1467.27,89.89 L1469.75,89.47 L1472.23,89.06 L1474.71,88.67 L1477.19,88.29
L1479.67,87.92 L1482.15,87.57 L1484.63,87.22 L1487.11,86.89 L1489.59,86.57 L1492.07,86.27 L1494.55,85.97 L1497.03,85.69
L1499.51,85.41 L1501.99,85.15 L1504.47,84.90 L1506.95,84.66 L1509.43,84.43 L1511.91,84.21 L1514.39,83.99 L1516.87,83.79
L1519.35,83.60 L1521.83,83.42 L1524.31,83.24 L1526.79,83.08 L1529.27,82.92 L1531.75,82.77 L1534.23,82.63 L1536.71,82.49
L1539.19,82.37 L1541.67,82.25 L1544.15,82.14 L1546.63,82.03 L1549.11,81.94 L1551.59,81.84 L1554.07,81.76 L1556.55,81.68
L1559.03,81.61 L1561.51,81.54 L1563.99,81.48 L1566.47,81.42 L1568.95,81.37 L1571.43,81.32 L1573.91,81.28 L1576.39,81.24
L1578.87,81.20 L1581.35,81.17 L1583.83,81.14 L1586.31,81.12 L1588.79,81.10 L1591.27,81.08 L1593.75,81.06 L1596.23,81.05
L1598.71,81.04 L1601.19,81.03 L1603.67,81.02 L1606.15,81.02 L1608.63,81.02 L1611.11,81.01 L1613.59,81.01 L1616.07,81.01
L1618.55,81.01 L1621.03,81.01 L1621.86,81.01 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,961.21 L252.07,961.21 L254.55,961.21 L257.03,961.21 L259.51,961.21 L261.99,961.21 L264.47,961.20 L266.95,961.20
L269.43,961.19 L271.91,961.18 L274.39,961.17 L276.87,961.16 L279.35,961.15 L281.83,961.13 L284.31,961.11 L286.79,961.09
L289.27,961.06 L291.75,961.03 L294.23,961.00 L296.71,960.96 L299.19,960.92 L301.67,960.87 L304.15,960.82 L306.63,960.76
L309.11,960.70 L311.59,960.64 L314.07,960.57 L316.55,960.49 L319.03,960.40 L321.51,960.32 L323.99,960.22 L326.47,960.12
L328.95,960.01 L331.43,959.89 L333.91,959.77 L336.39,959.64 L338.87,959.50 L341.35,959.35 L343.83,959.20 L346.31,959.03
L348.79,958.86 L351.27,958.68 L353.75,958.49 L356.23,958.29 L358.71,958.09 L361.19,957.87 L363.67,957.64 L366.15,957.40
L368.63,957.15 L371.11,956.90 L373.59,956.63 L376.07,956.35 L378.55,956.05 L381.03,955.75 L383.51,955.44 L385.99,955.11
L388.47,954.77 L390.95,954.42 L393.43,954.05 L395.91,953.68 L398.39,953.29 L400.87,952.89 L403.35,952.47 L405.83,952.04
L408.31,951.60 L410.79,951.14 L413.27,950.67 L415.75,950.18 L418.23,949.68 L420.71,949.16 L423.19,948.63 L425.67,948.08
L428.15,947.52 L430.63,946.94 L433.11,946.35 L435.59,945.74 L438.07,945.11 L440.55,944.47 L443.03,943.81 L445.51,943.13
L447.99,942.43 L450.47,941.72 L452.95,940.99 L455.43,940.24 L457.91,939.47 L460.39,938.69 L462.87,937.88 L465.35,937.06
L467.83,936.22 L470.31,935.36 L472.79,934.47 L475.27,933.57 L477.75,932.65 L480.23,931.71 L482.71,930.75 L485.19,929.77
L487.67,928.76 L490.15,927.74 L492.63,926.69 L495.11,925.62 L497.59,924.54 L500.07,923.42 L502.55,922.29 L505.03,921.14
L507.51,919.96 L509.99,918.76 L512.47,917.54 L514.95,916.29 L517.43,915.03 L519.91,913.74 L522.39,912.43 L524.87,911.10
L527.35,909.75 L529.83,908.37 L532.31,906.98 L534.79,905.56 L537.27,904.11 L539.75,902.65 L542.23,901.17 L544.71,899.66
L547.19,898.13 L549.67,896.58 L552.15,895.00 L554.63,893.41 L557.11,891.79 L559.59,890.16 L562.07,888.50 L564.55,886.82
L567.03,885.12 L569.51,883.40 L571.99,881.66 L574.47,879.90 L576.95,878.12 L579.43,876.33 L581.91,874.51 L584.39,872.67
L586.87,870.82 L589.35,868.94 L591.83,867.05 L594.31,865.14 L596.79,863.21 L599.27,861.27 L601.75,859.31 L604.23,857.33
L606.71,855.33 L609.19,853.32 L611.67,851.29 L614.15,849.24 L616.63,847.18 L619.11,845.10 L621.59,843.01 L624.07,840.90
L626.55,838.77 L629.03,836.63 L631.51,834.48 L633.99,832.31 L636.47,830.13 L638.95,827.93 L641.43,825.72 L643.91,823.50
L646.39,821.26 L648.87,819.01 L651.35,816.74 L653.83,814.47 L656.31,812.18 L658.79,809.88 L661.27,807.56 L663.75,805.24
L666.23,802.90 L668.71,800.55 L671.19,798.19 L673.67,795.82 L676.15,793.44 L678.63,791.04 L681.11,788.64 L683.59,786.23
L686.07,783.81 L688.55,781.37 L691.03,778.93 L693.51,776.48 L695.99,774.02 L698.47,771.55 L700.95,769.07 L703.43,766.59
L705.91,764.09 L708.39,761.59 L710.87,759.08 L713.35,756.57 L715.83,754.04 L718.31,751.51 L720.79,748.97 L723.27,746.43
L725.75,743.88 L728.23,741.32 L730.71,738.76 L733.19,736.19 L735.67,733.61 L738.15,731.03 L740.63,728.45 L743.11,725.86
L745.59,723.26 L748.07,720.66 L750.55,718.06 L753.03,715.45 L755.51,712.84 L757.99,710.23 L760.47,707.61 L762.95,704.99
L765.43,702.37 L767.91,699.74 L770.39,697.11 L772.87,694.48 L775.35,691.85 L777.83,689.22 L780.31,686.58 L782.79,683.94
L785.27,681.30 L787.75,678.66 L790.23,676.02 L792.71,673.38 L795.19,670.74 L797.67,668.10 L800.15,665.46 L802.63,662.82
L805.11,660.18 L807.59,657.54 L810.07,654.90 L812.55,652.26 L815.03,649.62 L817.51,646.98 L819.99,644.34 L822.47,641.70
L824.95,639.06 L827.43,636.42 L829.91,633.78 L832.39,631.13 L834.87,628.49 L837.35,625.85 L839.83,623.21 L842.31,620.57
L844.79,617.93 L847.27,615.29 L849.75,612.65 L852.23,610.01 L854.71,607.37 L857.19,604.73 L859.67,602.09 L862.15,599.45
L864.63,596.81 L867.11,594.17 L869.59,591.53 L872.07,588.89 L874.55,586.24 L877.03,583.60 L879.51,580.96 L881.99,578.32
L884.47,575.68 L886.95,573.04 L889.43,570.40 L891.91,567.76 L894.39,565.12 L896.87,562.48 L899.35,559.84 L901.83,557.20
L904.31,554.56 L906.79,551.92 L909.27,549.28 L911.75,546.64 L914.23,544.00 L916.71,541.35 L919.19,538.71 L921.67,536.07
L924.15,533.43 L926.63,530.79 L929.11,528.15 L931.59,525.51 L934.07,522.87 L936.55,520.23 L939.03,517.59 L941.51,514.95
L943.99,512.31 L946.47,509.67 L948.95,507.03 L951.43,504.39 L953.91,501.75 L956.39,499.10 L958.87,496.46 L961.35,493.82
L963.83,491.18 L966.31,488.54 L968.79,485.90 L971.27,483.26 L973.75,480.62 L976.23,477.98 L978.71,475.34 L981.19,472.70
L983.67,470.06 L986.15,467.42 L988.63,464.78 L991.11,462.14 L993.59,459.50 L996.07,456.86 L998.55,454.21 L1001.03,451.57
L1003.51,448.93 L1005.99,446.29 L1008.47,443.65 L1010.95,441.01 L1013.43,438.37 L1015.91,435.73 L1018.39,433.09 L1020.87,430.45
L1023.35,427.81 L1025.83,425.17 L1028.31,422.53 L1030.79,419.89 L1033.27,417.25 L1035.75,414.61 L1038.23,411.97 L1040.71,409.32
L1043.19,406.68 L1045.67,404.04 L1048.15,401.40 L1050.63,398.76 L1053.11,396.12 L1055.59,393.48 L1058.07,390.84 L1060.55,388.20
L1063.03,385.56 L1065.51,382.92 L1067.99,380.28 L1070.47,377.64 L1072.95,375.00 L1075.43,372.36 L1077.91,369.72 L1080.39,367.08
L1082.87,364.44 L1085.35,361.80 L1087.83,359.17 L1090.31,356.54 L1092.79,353.91 L1095.27,351.28 L1097.75,348.65 L1100.23,346.03
L1102.71,343.40 L1105.19,340.79 L1107.67,338.17 L1110.15,335.56 L1112.63,332.95 L1115.11,330.35 L1117.59,327.75 L1120.07,325.15
L1122.55,322.56 L1125.03,319.98 L1127.51,317.39 L1129.99,314.82 L1132.47,312.25 L1134.95,309.68 L1137.43,307.12 L1139.91,304.57
L1142.39,302.02 L1144.87,299.48 L1147.35,296.95 L1149.83,294.42 L1152.31,291.91 L1154.79,289.39 L1157.27,286.89 L1159.75,284.39
L1162.23,281.91 L1164.71,279.43 L1167.19,276.95 L1169.67,274.49 L1172.15,272.04 L1174.63,269.59 L1177.11,267.16 L1179.59,264.73
L1182.07,262.32 L1184.55,259.91 L1187.03,257.52 L1189.51,255.13 L1191.99,252.76 L1194.47,250.40 L1196.95,248.04 L1199.43,245.70
L1201.91,243.38 L1204.39,241.06 L1206.87,238.75 L1209.35,236.46 L1211.83,234.18 L1214.31,231.91 L1216.79,229.66 L1219.27,227.42
L1221.75,225.19 L1224.23,222.97 L1226.71,220.77 L1229.19,218.59 L1231.67,216.42 L1234.15,214.26 L1236.63,212.11 L1239.11,209.99
L1241.59,207.87 L1244.07,205.77 L1246.55,203.69 L1249.03,201.63 L1251.51,199.58 L1253.99,197.54 L1256.47,195.52 L1258.95,193.52
L1261.43,191.54 L1263.91,189.57 L1266.39,187.62 L1268.87,185.69 L1271.35,183.77 L1273.83,181.88 L1276.31,180.00 L1278.79,178.14
L1281.27,176.30 L1283.75,174.48 L1286.23,172.67 L1288.71,170.89 L1291.19,169.12 L1293.67,167.38 L1296.15,165.65 L1298.63,163.95
L1301.11,162.26 L1303.59,160.60 L1306.07,158.96 L1308.55,157.34 L1311.03,155.74 L1313.51,154.16 L1315.99,152.60 L1318.47,151.07
L1320.95,149.55 L1323.43,148.06 L1325.91,146.59 L1328.39,145.14 L1330.87,143.72 L1333.35,142.32 L1335.83,140.93 L1338.31,139.58
L1340.79,138.24 L1343.27,136.92 L1345.75,135.63 L1348.23,134.36 L1350.71,133.11 L1353.19,131.88 L1355.67,130.68 L1358.15,129.49
L1360.63,128.33 L1363.11,127.18 L1365.59,126.06 L1368.07,124.96 L1370.55,123.87 L1373.03,122.81 L1375.51,121.77 L1377.99,120.75
L1380.47,119.74 L1382.95,118.76 L1385.43,117.79 L1387.91,116.84 L1390.39,115.91 L1392.87,115.00 L1395.35,114.11 L1397.83,113.23
L1400.31,112.37 L1402.79,111.53 L1405.27,110.71 L1407.75,109.90 L1410.23,109.11 L1412.71,108.33 L1415.19,107.57 L1417.67,106.83
L1420.15,106.10 L1422.63,105.39 L1425.11,104.70 L1427.59,104.01 L1430.07,103.35 L1432.55,102.70 L1435.03,102.06 L1437.51,101.43
L1439.99,100.83 L1442.47,100.23 L1444.95,99.65 L1447.43,99.08 L1449.91,98.52 L1452.39,97.98 L1454.87,97.45 L1457.35,96.93
L1459.83,96.42 L1462.31,95.93 L1464.79,95.45 L1467.27,94.98 L1469.75,94.52 L1472.23,94.07 L1474.71,93.63 L1477.19,93.20
L1479.67,92.79 L1482.15,92.38 L1484.63,91.98 L1487.11,91.60 L1489.59,91.22 L1492.07,90.85 L1494.55,90.49 L1497.03,90.14
L1499.51,89.80 L1501.99,89.47 L1504.47,89.14 L1506.95,88.83 L1509.43,88.52 L1511.91,88.22 L1514.39,87.92 L1516.87,87.64
L1519.35,87.36 L1521.83,87.08 L1524.31,86.81 L1526.79,86.55 L1529.27,86.30 L1531.75,86.05 L1534.23,85.81 L1536.71,85.57
L1539.19,85.33 L1541.67,85.11 L1544.15,84.88 L1546.63,84.66 L1549.11,84.45 L1551.59,84.24 L1554.07,84.03 L1556.55,83.83
L1559.03,83.63 L1561.51,83.43 L1563.99,83.24 L1566.47,83.05 L1568.95,82.86 L1571.43,82.67 L1573.91,82.49 L1576.39,82.30
L1578.87,82.12 L1581.35,81.94 L1583.83,81.76 L1586.31,81.59 L1588.79,81.41 L1591.27,81.23 L1593.75,81.06 L1594.41,81.01
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,961.21 L252.07,961.03 L254.55,960.86 L257.03,960.68 L259.51,960.50 L261.99,960.33 L264.47,960.15 L266.95,959.97
L269.43,959.78 L271.91,959.60 L274.39,959.41 L276.87,959.22 L279.35,959.03 L281.83,958.84 L284.31,958.64 L286.79,958.45
L289.27,958.24 L291.75,958.04 L294.23,957.83 L296.71,957.61 L299.19,957.40 L301.67,957.17 L304.15,956.95 L306.63,956.71
L309.11,956.48 L311.59,956.24 L314.07,955.99 L316.55,955.74 L319.03,955.48 L321.51,955.21 L323.99,954.94 L326.47,954.66
L328.95,954.37 L331.43,954.08 L333.91,953.78 L336.39,953.48 L338.87,953.16 L341.35,952.84 L343.83,952.51 L346.31,952.17
L348.79,951.82 L351.27,951.46 L353.75,951.10 L356.23,950.72 L358.71,950.34 L361.19,949.95 L363.67,949.54 L366.15,949.13
L368.63,948.70 L371.11,948.27 L373.59,947.82 L376.07,947.37 L378.55,946.90 L381.03,946.42 L383.51,945.93 L385.99,945.43
L388.47,944.91 L390.95,944.38 L393.43,943.84 L395.91,943.29 L398.39,942.73 L400.87,942.15 L403.35,941.55 L405.83,940.95
L408.31,940.33 L410.79,939.70 L413.27,939.05 L415.75,938.38 L418.23,937.71 L420.71,937.02 L423.19,936.31 L425.67,935.58
L428.15,934.85 L430.63,934.09 L433.11,933.32 L435.59,932.53 L438.07,931.73 L440.55,930.91 L443.03,930.07 L445.51,929.22
L447.99,928.35 L450.47,927.46 L452.95,926.55 L455.43,925.63 L457.91,924.69 L460.39,923.72 L462.87,922.74 L465.35,921.74
L467.83,920.73 L470.31,919.69 L472.79,918.63 L475.27,917.55 L477.75,916.46 L480.23,915.34 L482.71,914.20 L485.19,913.04
L487.67,911.86 L490.15,910.66 L492.63,909.44 L495.11,908.20 L497.59,906.93 L500.07,905.64 L502.55,904.33 L505.03,903.00
L507.51,901.65 L509.99,900.27 L512.47,898.88 L514.95,897.46 L517.43,896.02 L519.91,894.55 L522.39,893.07 L524.87,891.56
L527.35,890.03 L529.83,888.48 L532.31,886.91 L534.79,885.31 L537.27,883.70 L539.75,882.06 L542.23,880.40 L544.71,878.72
L547.19,877.02 L549.67,875.30 L552.15,873.56 L554.63,871.80 L557.11,870.03 L559.59,868.23 L562.07,866.41 L564.55,864.57
L567.03,862.72 L569.51,860.85 L571.99,858.95 L574.47,857.04 L576.95,855.12 L579.43,853.17 L581.91,851.21 L584.39,849.23
L586.87,847.23 L589.35,845.22 L591.83,843.19 L594.31,841.14 L596.79,839.08 L599.27,837.00 L601.75,834.91 L604.23,832.80
L606.71,830.68 L609.19,828.54 L611.67,826.38 L614.15,824.21 L616.63,822.03 L619.11,819.83 L621.59,817.62 L624.07,815.40
L626.55,813.16 L629.03,810.91 L631.51,808.65 L633.99,806.37 L636.47,804.08 L638.95,801.78 L641.43,799.46 L643.91,797.14
L646.39,794.80 L648.87,792.45 L651.35,790.09 L653.83,787.72 L656.31,785.34 L658.79,782.95 L661.27,780.54 L663.75,778.13
L666.23,775.71 L668.71,773.28 L671.19,770.83 L673.67,768.38 L676.15,765.92 L678.63,763.45 L681.11,760.98 L683.59,758.49
L686.07,756.00 L688.55,753.49 L691.03,750.99 L693.51,748.47 L695.99,745.94 L698.47,743.41 L700.95,740.87 L703.43,738.33
L705.91,735.78 L708.39,733.22 L710.87,730.66 L713.35,728.09 L715.83,725.51 L718.31,722.93 L720.79,720.35 L723.27,717.76
L725.75,715.16 L728.23,712.57 L730.71,709.96 L733.19,707.36 L735.67,704.75 L738.15,702.13 L740.63,699.51 L743.11,696.89
L745.59,694.27 L748.07,691.64 L750.55,689.02 L753.03,686.38 L755.51,683.75 L757.99,681.12 L760.47,678.48 L762.95,675.84
L765.43,673.21 L767.91,670.57 L770.39,667.93 L772.87,665.29 L775.35,662.65 L777.83,660.01 L780.31,657.36 L782.79,654.72
L785.27,652.08 L787.75,649.44 L790.23,646.80 L792.71,644.16 L795.19,641.52 L797.67,638.88 L800.15,636.24 L802.63,633.60
L805.11,630.96 L807.59,628.32 L810.07,625.68 L812.55,623.04 L815.03,620.40 L817.51,617.76 L819.99,615.12 L822.47,612.47
L824.95,609.83 L827.43,607.19 L829.91,604.55 L832.39,601.91 L834.87,599.27 L837.35,596.63 L839.83,593.99 L842.31,591.35
L844.79,588.71 L847.27,586.07 L849.75,583.43 L852.23,580.79 L854.71,578.15 L857.19,575.51 L859.67,572.87 L862.15,570.23
L864.63,567.58 L867.11,564.94 L869.59,562.30 L872.07,559.66 L874.55,557.02 L877.03,554.38 L879.51,551.74 L881.99,549.10
L884.47,546.46 L886.95,543.82 L889.43,541.18 L891.91,538.54 L894.39,535.90 L896.87,533.26 L899.35,530.62 L901.83,527.98
L904.31,525.33 L906.79,522.69 L909.27,520.05 L911.75,517.41 L914.23,514.77 L916.71,512.13 L919.19,509.49 L921.67,506.85
L924.15,504.21 L926.63,501.57 L929.11,498.93 L931.59,496.29 L934.07,493.65 L936.55,491.01 L939.03,488.37 L941.51,485.73
L943.99,483.09 L946.47,480.44 L948.95,477.80 L951.43,475.16 L953.91,472.52 L956.39,469.88 L958.87,467.24 L961.35,464.60
L963.83,461.96 L966.31,459.32 L968.79,456.68 L971.27,454.04 L973.75,451.40 L976.23,448.76 L978.71,446.12 L981.19,443.48
L983.67,440.84 L986.15,438.20 L988.63,435.55 L991.11,432.91 L993.59,430.27 L996.07,427.63 L998.55,424.99 L1001.03,422.35
L1003.51,419.71 L1005.99,417.07 L1008.47,414.43 L1010.95,411.79 L1013.43,409.15 L1015.91,406.51 L1018.39,403.87 L1020.87,401.23
L1023.35,398.59 L1025.83,395.95 L1028.31,393.30 L1030.79,390.66 L1033.27,388.02 L1035.75,385.38 L1038.23,382.74 L1040.71,380.10
L1043.19,377.46 L1045.67,374.82 L1048.15,372.18 L1050.63,369.54 L1053.11,366.90 L1055.59,364.26 L1058.07,361.62 L1060.55,358.98
L1063.03,356.34 L1065.51,353.71 L1067.99,351.07 L1070.47,348.44 L1072.95,345.81 L1075.43,343.18 L1077.91,340.55 L1080.39,337.93
L1082.87,335.31 L1085.35,332.69 L1087.83,330.07 L1090.31,327.46 L1092.79,324.85 L1095.27,322.25 L1097.75,319.65 L1100.23,317.05
L1102.71,314.46 L1105.19,311.88 L1107.67,309.30 L1110.15,306.72 L1112.63,304.15 L1115.11,301.58 L1117.59,299.03 L1120.07,296.47
L1122.55,293.93 L1125.03,291.39 L1127.51,288.85 L1129.99,286.33 L1132.47,283.81 L1134.95,281.30 L1137.43,278.79 L1139.91,276.30
L1142.39,273.81 L1144.87,271.33 L1147.35,268.86 L1149.83,266.39 L1152.31,263.94 L1154.79,261.50 L1157.27,259.06 L1159.75,256.64
L1162.23,254.22 L1164.71,251.82 L1167.19,249.42 L1169.67,247.04 L1172.15,244.66 L1174.63,242.30 L1177.11,239.95 L1179.59,237.61
L1182.07,235.28 L1184.55,232.96 L1187.03,230.66 L1189.51,228.36 L1191.99,226.08 L1194.47,223.82 L1196.95,221.56 L1199.43,219.32
L1201.91,217.09 L1204.39,214.88 L1206.87,212.68 L1209.35,210.49 L1211.83,208.32 L1214.31,206.16 L1216.79,204.02 L1219.27,201.89
L1221.75,199.77 L1224.23,197.68 L1226.71,195.59 L1229.19,193.53 L1231.67,191.48 L1234.15,189.44 L1236.63,187.43 L1239.11,185.42
L1241.59,183.44 L1244.07,181.47 L1246.55,179.52 L1249.03,177.59 L1251.51,175.68 L1253.99,173.78 L1256.47,171.90 L1258.95,170.04
L1261.43,168.20 L1263.91,166.38 L1266.39,164.57 L1268.87,162.79 L1271.35,161.03 L1273.83,159.28 L1276.31,157.56 L1278.79,155.85
L1281.27,154.17 L1283.75,152.50 L1286.23,150.86 L1288.71,149.24 L1291.19,147.64 L1293.67,146.06 L1296.15,144.50 L1298.63,142.97
L1301.11,141.45 L1303.59,139.96 L1306.07,138.49 L1308.55,137.05 L1311.03,135.62 L1313.51,134.22 L1315.99,132.84 L1318.47,131.48
L1320.95,130.14 L1323.43,128.83 L1325.91,127.53 L1328.39,126.26 L1330.87,125.01 L1333.35,123.78 L1335.83,122.58 L1338.31,121.40
L1340.79,120.24 L1343.27,119.10 L1345.75,117.98 L1348.23,116.88 L1350.71,115.81 L1353.19,114.76 L1355.67,113.73 L1358.15,112.72
L1360.63,111.73 L1363.11,110.76 L1365.59,109.82 L1368.07,108.89 L1370.55,107.98 L1373.03,107.10 L1375.51,106.23 L1377.99,105.38
L1380.47,104.56 L1382.95,103.75 L1385.43,102.96 L1387.91,102.18 L1390.39,101.43 L1392.87,100.69 L1395.35,99.98 L1397.83,99.28
L1400.31,98.59 L1402.79,97.93 L1405.27,97.28 L1407.75,96.65 L1410.23,96.03 L1412.71,95.43 L1415.19,94.85 L1417.67,94.28
L1420.15,93.73 L1422.63,93.20 L1425.11,92.68 L1427.59,92.17 L1430.07,91.68 L1432.55,91.21 L1435.03,90.74 L1437.51,90.30
L1439.99,89.86 L1442.47,89.44 L1444.95,89.04 L1447.43,88.64 L1449.91,88.26 L1452.39,87.90 L1454.87,87.54 L1457.35,87.20
L1459.83,86.87 L1462.31,86.55 L1464.79,86.25 L1467.27,85.95 L1469.75,85.67 L1472.23,85.40 L1474.71,85.13 L1477.19,84.88
L1479.67,84.64 L1482.15,84.41 L1484.63,84.19 L1487.11,83.98 L1489.59,83.78 L1492.07,83.59 L1494.55,83.40 L1497.03,83.23
L1499.51,83.07 L1501.99,82.91 L1504.47,82.76 L1506.95,82.62 L1509.43,82.49 L1511.91,82.36 L1514.39,82.24 L1516.87,82.13
L1519.35,82.03 L1521.83,81.93 L1524.31,81.84 L1526.79,81.75 L1529.27,81.67 L1531.75,81.60 L1534.23,81.53 L1536.71,81.47
L1539.19,81.41 L1541.67,81.36 L1544.15,81.32 L1546.63,81.27 L1549.11,81.23 L1551.59,81.20 L1554.07,81.17 L1556.55,81.14
L1559.03,81.12 L1561.51,81.10 L1563.99,81.08 L1566.47,81.06 L1568.95,81.05 L1571.43,81.04 L1573.91,81.03 L1576.39,81.02
L1578.87,81.02 L1581.35,81.02 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,81.01
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Position</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 47 KiB

BIN
data/s_curve_velocity.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

544
data/s_curve_velocity.svg Normal file
View File

@ -0,0 +1,544 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,814.51 L1737.59,814.51 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,814.51 L259.71,814.51 '/> <g transform="translate(236.99,819.71)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,667.81 L1737.59,667.81 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,667.81 L259.71,667.81 '/> <g transform="translate(236.99,673.01)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,374.41 L1737.59,374.41 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,374.41 L259.71,374.41 '/> <g transform="translate(236.99,379.61)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,227.71 L1737.59,227.71 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,227.71 L259.71,227.71 '/> <g transform="translate(236.99,232.91)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(179.81,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >velocity [m/s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,961.21 L252.07,961.17 L254.55,961.06 L257.03,960.88 L259.51,960.62 L261.99,960.29 L264.47,959.89 L266.95,959.41
L269.43,958.86 L271.91,958.24 L274.39,957.54 L276.87,956.77 L279.35,955.93 L281.83,955.01 L284.31,954.02 L286.79,952.96
L289.27,951.82 L291.75,950.61 L294.23,949.33 L296.71,947.97 L299.19,946.54 L301.67,945.04 L304.15,943.46 L306.63,941.81
L309.11,940.09 L311.59,938.29 L314.07,936.42 L316.55,934.47 L319.03,932.46 L321.51,930.37 L323.99,928.20 L326.47,925.97
L328.95,923.65 L331.43,921.27 L333.91,918.81 L336.39,916.28 L338.87,913.68 L341.35,911.00 L343.83,908.25 L346.31,905.43
L348.79,902.53 L351.27,899.56 L353.75,896.52 L356.23,893.40 L358.71,890.21 L361.19,886.94 L363.67,883.61 L366.15,880.19
L368.63,876.71 L371.11,873.15 L373.59,869.52 L376.07,865.82 L378.55,862.04 L381.03,858.19 L383.51,854.27 L385.99,850.27
L388.47,846.20 L390.95,842.05 L393.43,837.84 L395.91,833.54 L398.39,829.18 L400.87,824.74 L403.35,820.23 L405.83,815.65
L408.31,810.99 L410.79,806.26 L413.27,801.45 L415.75,796.58 L418.23,791.62 L420.71,786.60 L423.19,781.50 L425.67,776.33
L428.15,771.09 L430.63,765.77 L433.11,760.38 L435.59,754.91 L438.07,749.38 L440.55,743.76 L443.03,738.08 L445.51,732.32
L447.99,726.49 L450.47,720.59 L452.95,714.61 L455.43,708.56 L457.91,702.43 L460.39,696.23 L462.87,689.96 L465.35,683.62
L467.83,677.20 L470.31,670.71 L472.79,664.14 L475.27,657.50 L477.75,650.79 L480.23,644.01 L482.71,637.15 L485.19,630.22
L487.67,623.21 L490.15,616.13 L492.63,608.98 L495.11,601.76 L497.59,594.46 L500.07,587.12 L502.55,579.79 L505.03,572.45
L507.51,565.12 L509.99,557.78 L512.47,550.45 L514.95,543.11 L517.43,535.78 L519.91,528.44 L522.39,521.11 L524.87,513.77
L527.35,506.44 L529.83,499.10 L532.31,491.77 L534.79,484.43 L537.27,477.10 L539.75,469.76 L542.23,462.43 L544.71,455.09
L547.19,447.76 L549.67,440.46 L552.15,433.24 L554.63,426.09 L557.11,419.01 L559.59,412.00 L562.07,405.07 L564.55,398.21
L567.03,391.43 L569.51,384.72 L571.99,378.08 L574.47,371.51 L576.95,365.02 L579.43,358.60 L581.91,352.26 L584.39,345.99
L586.87,339.79 L589.35,333.66 L591.83,327.61 L594.31,321.63 L596.79,315.73 L599.27,309.90 L601.75,304.14 L604.23,298.46
L606.71,292.84 L609.19,287.31 L611.67,281.84 L614.15,276.45 L616.63,271.13 L619.11,265.89 L621.59,260.72 L624.07,255.62
L626.55,250.60 L629.03,245.64 L631.51,240.77 L633.99,235.96 L636.47,231.23 L638.95,226.57 L641.43,221.99 L643.91,217.48
L646.39,213.04 L648.87,208.68 L651.35,204.38 L653.83,200.17 L656.31,196.02 L658.79,191.95 L661.27,187.95 L663.75,184.03
L666.23,180.18 L668.71,176.40 L671.19,172.70 L673.67,169.07 L676.15,165.51 L678.63,162.03 L681.11,158.61 L683.59,155.28
L686.07,152.01 L688.55,148.82 L691.03,145.70 L693.51,142.66 L695.99,139.69 L698.47,136.79 L700.95,133.97 L703.43,131.22
L705.91,128.54 L708.39,125.94 L710.87,123.41 L713.35,120.95 L715.83,118.57 L718.31,116.25 L720.79,114.02 L723.27,111.85
L725.75,109.76 L728.23,107.75 L730.71,105.80 L733.19,103.93 L735.67,102.13 L738.15,100.41 L740.63,98.76 L743.11,97.18
L745.59,95.68 L748.07,94.25 L750.55,92.89 L753.03,91.61 L755.51,90.40 L757.99,89.26 L760.47,88.20 L762.95,87.21
L765.43,86.29 L767.91,85.45 L770.39,84.68 L772.87,83.98 L775.35,83.36 L777.83,82.81 L780.31,82.33 L782.79,81.93
L785.27,81.60 L787.75,81.34 L790.23,81.16 L792.71,81.05 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.01 L1053.11,81.01 L1055.59,81.01 L1058.07,81.01 L1060.55,81.01
L1063.03,81.01 L1065.51,81.01 L1067.99,81.01 L1070.47,81.01 L1072.95,81.01 L1075.43,81.01 L1077.91,81.03 L1080.39,81.11
L1082.87,81.27 L1085.35,81.50 L1087.83,81.81 L1090.31,82.19 L1092.79,82.64 L1095.27,83.17 L1097.75,83.76 L1100.23,84.44
L1102.71,85.18 L1105.19,86.00 L1107.67,86.89 L1110.15,87.86 L1112.63,88.90 L1115.11,90.01 L1117.59,91.20 L1120.07,92.46
L1122.55,93.79 L1125.03,95.20 L1127.51,96.67 L1129.99,98.23 L1132.47,99.85 L1134.95,101.55 L1137.43,103.32 L1139.91,105.17
L1142.39,107.09 L1144.87,109.08 L1147.35,111.15 L1149.83,113.29 L1152.31,115.50 L1154.79,117.79 L1157.27,120.15 L1159.75,122.58
L1162.23,125.09 L1164.71,127.66 L1167.19,130.32 L1169.67,133.04 L1172.15,135.84 L1174.63,138.72 L1177.11,141.66 L1179.59,144.68
L1182.07,147.77 L1184.55,150.94 L1187.03,154.18 L1189.51,157.49 L1191.99,160.88 L1194.47,164.34 L1196.95,167.87 L1199.43,171.48
L1201.91,175.16 L1204.39,178.91 L1206.87,182.74 L1209.35,186.64 L1211.83,190.61 L1214.31,194.66 L1216.79,198.78 L1219.27,202.97
L1221.75,207.24 L1224.23,211.58 L1226.71,215.99 L1229.19,220.48 L1231.67,225.04 L1234.15,229.67 L1236.63,234.38 L1239.11,239.16
L1241.59,244.01 L1244.07,248.94 L1246.55,253.94 L1249.03,259.01 L1251.51,264.16 L1253.99,269.38 L1256.47,274.67 L1258.95,280.04
L1261.43,285.48 L1263.91,290.99 L1266.39,296.58 L1268.87,302.24 L1271.35,307.97 L1273.83,313.78 L1276.31,319.66 L1278.79,325.61
L1281.27,331.64 L1283.75,337.74 L1286.23,343.91 L1288.71,350.16 L1291.19,356.48 L1293.67,362.87 L1296.15,369.34 L1298.63,375.88
L1301.11,382.49 L1303.59,389.18 L1306.07,395.94 L1308.55,402.78 L1311.03,409.68 L1313.51,416.66 L1315.99,423.72 L1318.47,430.84
L1320.95,438.05 L1323.43,445.32 L1325.91,452.65 L1328.39,459.99 L1330.87,467.32 L1333.35,474.66 L1335.83,481.99 L1338.31,489.33
L1340.79,496.66 L1343.27,504.00 L1345.75,511.33 L1348.23,518.67 L1350.71,526.00 L1353.19,533.34 L1355.67,540.67 L1358.15,548.01
L1360.63,555.34 L1363.11,562.68 L1365.59,570.01 L1368.07,577.35 L1370.55,584.68 L1373.03,592.02 L1375.51,599.33 L1377.99,606.58
L1380.47,613.76 L1382.95,620.86 L1385.43,627.89 L1387.91,634.85 L1390.39,641.73 L1392.87,648.54 L1395.35,655.28 L1397.83,661.94
L1400.31,668.53 L1402.79,675.04 L1405.27,681.49 L1407.75,687.85 L1410.23,694.15 L1412.71,700.37 L1415.19,706.52 L1417.67,712.60
L1420.15,718.60 L1422.63,724.53 L1425.11,730.39 L1427.59,736.17 L1430.07,741.88 L1432.55,747.51 L1435.03,753.08 L1437.51,758.56
L1439.99,763.98 L1442.47,769.32 L1444.95,774.59 L1447.43,779.79 L1449.91,784.91 L1452.39,789.96 L1454.87,794.93 L1457.35,799.84
L1459.83,804.66 L1462.31,809.42 L1464.79,814.10 L1467.27,818.71 L1469.75,823.25 L1472.23,827.71 L1474.71,832.10 L1477.19,836.41
L1479.67,840.66 L1482.15,844.82 L1484.63,848.92 L1487.11,852.94 L1489.59,856.89 L1492.07,860.77 L1494.55,864.57 L1497.03,868.30
L1499.51,871.95 L1501.99,875.53 L1504.47,879.04 L1506.95,882.48 L1509.43,885.84 L1511.91,889.13 L1514.39,892.34 L1516.87,895.48
L1519.35,898.55 L1521.83,901.55 L1524.31,904.47 L1526.79,907.32 L1529.27,910.09 L1531.75,912.79 L1534.23,915.42 L1536.71,917.98
L1539.19,920.46 L1541.67,922.87 L1544.15,925.20 L1546.63,927.46 L1549.11,929.65 L1551.59,931.77 L1554.07,933.81 L1556.55,935.78
L1559.03,937.67 L1561.51,939.49 L1563.99,941.24 L1566.47,942.92 L1568.95,944.52 L1571.43,946.05 L1573.91,947.50 L1576.39,948.88
L1578.87,950.19 L1581.35,951.43 L1583.83,952.59 L1586.31,953.68 L1588.79,954.69 L1591.27,955.63 L1593.75,956.50 L1596.23,957.29
L1598.71,958.02 L1601.19,958.66 L1603.67,959.24 L1606.15,959.74 L1608.63,960.17 L1611.11,960.52 L1613.59,960.80 L1616.07,961.01
L1618.55,961.14 L1621.03,961.21 L1621.86,961.21 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,961.21 L252.07,961.17 L254.55,961.06 L257.03,960.88 L259.51,960.62 L261.99,960.29 L264.47,959.89 L266.95,959.41
L269.43,958.86 L271.91,958.24 L274.39,957.54 L276.87,956.77 L279.35,955.93 L281.83,955.01 L284.31,954.02 L286.79,952.96
L289.27,951.82 L291.75,950.61 L294.23,949.33 L296.71,947.97 L299.19,946.54 L301.67,945.04 L304.15,943.46 L306.63,941.81
L309.11,940.09 L311.59,938.29 L314.07,936.42 L316.55,934.47 L319.03,932.46 L321.51,930.37 L323.99,928.20 L326.47,925.97
L328.95,923.65 L331.43,921.27 L333.91,918.81 L336.39,916.28 L338.87,913.68 L341.35,911.00 L343.83,908.25 L346.31,905.43
L348.79,902.53 L351.27,899.56 L353.75,896.52 L356.23,893.40 L358.71,890.21 L361.19,886.94 L363.67,883.61 L366.15,880.19
L368.63,876.71 L371.11,873.15 L373.59,869.52 L376.07,865.82 L378.55,862.04 L381.03,858.19 L383.51,854.27 L385.99,850.27
L388.47,846.20 L390.95,842.05 L393.43,837.84 L395.91,833.54 L398.39,829.18 L400.87,824.74 L403.35,820.23 L405.83,815.65
L408.31,810.99 L410.79,806.26 L413.27,801.45 L415.75,796.58 L418.23,791.62 L420.71,786.60 L423.19,781.50 L425.67,776.33
L428.15,771.09 L430.63,765.77 L433.11,760.38 L435.59,754.91 L438.07,749.38 L440.55,743.76 L443.03,738.08 L445.51,732.32
L447.99,726.49 L450.47,720.59 L452.95,714.61 L455.43,708.56 L457.91,702.43 L460.39,696.23 L462.87,689.96 L465.35,683.62
L467.83,677.20 L470.31,670.71 L472.79,664.14 L475.27,657.50 L477.75,650.79 L480.23,644.01 L482.71,637.15 L485.19,630.22
L487.67,623.21 L490.15,616.13 L492.63,608.98 L495.11,601.76 L497.59,594.46 L500.07,587.12 L502.55,579.79 L505.03,572.45
L507.51,565.12 L509.99,557.78 L512.47,550.45 L514.95,543.11 L517.43,535.78 L519.91,528.44 L522.39,521.11 L524.87,513.77
L527.35,506.44 L529.83,499.10 L532.31,491.77 L534.79,484.43 L537.27,477.10 L539.75,469.76 L542.23,462.43 L544.71,455.09
L547.19,447.76 L549.67,440.46 L552.15,433.24 L554.63,426.09 L557.11,419.01 L559.59,412.00 L562.07,405.07 L564.55,398.21
L567.03,391.43 L569.51,384.72 L571.99,378.08 L574.47,371.51 L576.95,365.02 L579.43,358.60 L581.91,352.26 L584.39,345.99
L586.87,339.79 L589.35,333.66 L591.83,327.61 L594.31,321.63 L596.79,315.73 L599.27,309.90 L601.75,304.14 L604.23,298.46
L606.71,292.84 L609.19,287.31 L611.67,281.84 L614.15,276.45 L616.63,271.13 L619.11,265.89 L621.59,260.72 L624.07,255.62
L626.55,250.60 L629.03,245.64 L631.51,240.77 L633.99,235.96 L636.47,231.23 L638.95,226.57 L641.43,221.99 L643.91,217.48
L646.39,213.04 L648.87,208.68 L651.35,204.38 L653.83,200.17 L656.31,196.02 L658.79,191.95 L661.27,187.95 L663.75,184.03
L666.23,180.18 L668.71,176.40 L671.19,172.70 L673.67,169.07 L676.15,165.51 L678.63,162.03 L681.11,158.61 L683.59,155.28
L686.07,152.01 L688.55,148.82 L691.03,145.70 L693.51,142.66 L695.99,139.69 L698.47,136.79 L700.95,133.97 L703.43,131.22
L705.91,128.54 L708.39,125.94 L710.87,123.41 L713.35,120.95 L715.83,118.57 L718.31,116.25 L720.79,114.02 L723.27,111.85
L725.75,109.76 L728.23,107.75 L730.71,105.80 L733.19,103.93 L735.67,102.13 L738.15,100.41 L740.63,98.76 L743.11,97.18
L745.59,95.68 L748.07,94.25 L750.55,92.89 L753.03,91.61 L755.51,90.40 L757.99,89.26 L760.47,88.20 L762.95,87.21
L765.43,86.29 L767.91,85.45 L770.39,84.68 L772.87,83.98 L775.35,83.36 L777.83,82.81 L780.31,82.33 L782.79,81.93
L785.27,81.60 L787.75,81.34 L790.23,81.16 L792.71,81.05 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.01 L1053.11,81.01 L1055.59,81.01 L1058.07,81.01 L1060.55,81.01
L1063.03,81.01 L1065.51,81.01 L1067.99,81.01 L1070.47,81.03 L1072.95,81.12 L1075.43,81.28 L1077.91,81.52 L1080.39,81.83
L1082.87,82.22 L1085.35,82.67 L1087.83,83.20 L1090.31,83.81 L1092.79,84.48 L1095.27,85.24 L1097.75,86.06 L1100.23,86.96
L1102.71,87.93 L1105.19,88.97 L1107.67,90.09 L1110.15,91.28 L1112.63,92.54 L1115.11,93.88 L1117.59,95.29 L1120.07,96.78
L1122.55,98.33 L1125.03,99.96 L1127.51,101.67 L1129.99,103.45 L1132.47,105.30 L1134.95,107.22 L1137.43,109.22 L1139.91,111.29
L1142.39,113.43 L1144.87,115.65 L1147.35,117.94 L1149.83,120.31 L1152.31,122.74 L1154.79,125.25 L1157.27,127.84 L1159.75,130.50
L1162.23,133.23 L1164.71,136.03 L1167.19,138.91 L1169.67,141.86 L1172.15,144.89 L1174.63,147.98 L1177.11,151.15 L1179.59,154.40
L1182.07,157.72 L1184.55,161.11 L1187.03,164.57 L1189.51,168.11 L1191.99,171.72 L1194.47,175.41 L1196.95,179.16 L1199.43,183.00
L1201.91,186.90 L1204.39,190.88 L1206.87,194.93 L1209.35,199.05 L1211.83,203.25 L1214.31,207.52 L1216.79,211.87 L1219.27,216.29
L1221.75,220.78 L1224.23,225.34 L1226.71,229.98 L1229.19,234.69 L1231.67,239.48 L1234.15,244.34 L1236.63,249.27 L1239.11,254.27
L1241.59,259.35 L1244.07,264.50 L1246.55,269.73 L1249.03,275.03 L1251.51,280.40 L1253.99,285.84 L1256.47,291.36 L1258.95,296.95
L1261.43,302.62 L1263.91,308.36 L1266.39,314.17 L1268.87,320.05 L1271.35,326.01 L1273.83,332.04 L1276.31,338.15 L1278.79,344.33
L1281.27,350.58 L1283.75,356.90 L1286.23,363.30 L1288.71,369.77 L1291.19,376.32 L1293.67,382.94 L1296.15,389.63 L1298.63,396.40
L1301.11,403.23 L1303.59,410.15 L1306.07,417.13 L1308.55,424.19 L1311.03,431.32 L1313.51,438.53 L1315.99,445.81 L1318.47,453.14
L1320.95,460.47 L1323.43,467.81 L1325.91,475.14 L1328.39,482.48 L1330.87,489.81 L1333.35,497.15 L1335.83,504.48 L1338.31,511.82
L1340.79,519.15 L1343.27,526.49 L1345.75,533.82 L1348.23,541.14 L1350.71,548.38 L1353.19,555.55 L1355.67,562.65 L1358.15,569.68
L1360.63,576.63 L1363.11,583.51 L1365.59,590.31 L1368.07,597.04 L1370.55,603.70 L1373.03,610.28 L1375.51,616.79 L1377.99,623.23
L1380.47,629.60 L1382.95,635.89 L1385.43,642.11 L1387.91,648.25 L1390.39,654.32 L1392.87,660.32 L1395.35,666.24 L1397.83,672.09
L1400.31,677.87 L1402.79,683.58 L1405.27,689.21 L1407.75,694.76 L1410.23,700.25 L1412.71,705.66 L1415.19,711.00 L1417.67,716.26
L1420.15,721.45 L1422.63,726.57 L1425.11,731.61 L1427.59,736.58 L1430.07,741.48 L1432.55,746.30 L1435.03,751.05 L1437.51,755.73
L1439.99,760.34 L1442.47,764.87 L1444.95,769.32 L1447.43,773.71 L1449.91,778.02 L1452.39,782.26 L1454.87,786.42 L1457.35,790.51
L1459.83,794.53 L1462.31,798.47 L1464.79,802.34 L1467.27,806.14 L1469.75,809.86 L1472.23,813.51 L1474.71,817.09 L1477.19,820.59
L1479.67,824.02 L1482.15,827.38 L1484.63,830.66 L1487.11,833.87 L1489.59,837.01 L1492.07,840.07 L1494.55,843.06 L1497.03,845.98
L1499.51,848.83 L1501.99,851.60 L1504.47,854.29 L1506.95,856.92 L1509.43,859.47 L1511.91,861.94 L1514.39,864.35 L1516.87,866.68
L1519.35,868.93 L1521.83,871.12 L1524.31,873.23 L1526.79,875.26 L1529.27,877.23 L1531.75,879.12 L1534.23,880.93 L1536.71,882.68
L1539.19,884.35 L1541.67,885.94 L1544.15,887.47 L1546.63,888.92 L1549.11,890.29 L1551.59,891.60 L1554.07,892.83 L1556.55,893.98
L1559.03,895.07 L1561.51,896.08 L1563.99,897.01 L1566.47,897.87 L1568.95,898.66 L1571.43,899.38 L1573.91,900.02 L1576.39,900.59
L1578.87,901.09 L1581.35,901.51 L1583.83,901.86 L1586.31,902.14 L1588.79,902.34 L1591.27,902.47 L1593.75,902.53 L1594.41,902.53
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,902.53 L252.07,902.49 L254.55,902.38 L257.03,902.20 L259.51,901.94 L261.99,901.61 L264.47,901.21 L266.95,900.73
L269.43,900.18 L271.91,899.56 L274.39,898.86 L276.87,898.09 L279.35,897.25 L281.83,896.33 L284.31,895.34 L286.79,894.28
L289.27,893.14 L291.75,891.93 L294.23,890.65 L296.71,889.29 L299.19,887.86 L301.67,886.36 L304.15,884.78 L306.63,883.13
L309.11,881.41 L311.59,879.61 L314.07,877.74 L316.55,875.79 L319.03,873.78 L321.51,871.69 L323.99,869.52 L326.47,867.29
L328.95,864.97 L331.43,862.59 L333.91,860.13 L336.39,857.60 L338.87,855.00 L341.35,852.32 L343.83,849.57 L346.31,846.75
L348.79,843.85 L351.27,840.88 L353.75,837.84 L356.23,834.72 L358.71,831.53 L361.19,828.26 L363.67,824.93 L366.15,821.51
L368.63,818.03 L371.11,814.47 L373.59,810.84 L376.07,807.14 L378.55,803.36 L381.03,799.51 L383.51,795.59 L385.99,791.59
L388.47,787.52 L390.95,783.37 L393.43,779.16 L395.91,774.86 L398.39,770.50 L400.87,766.06 L403.35,761.55 L405.83,756.97
L408.31,752.31 L410.79,747.58 L413.27,742.77 L415.75,737.90 L418.23,732.94 L420.71,727.92 L423.19,722.82 L425.67,717.65
L428.15,712.41 L430.63,707.09 L433.11,701.70 L435.59,696.23 L438.07,690.70 L440.55,685.08 L443.03,679.40 L445.51,673.64
L447.99,667.81 L450.47,661.91 L452.95,655.93 L455.43,649.88 L457.91,643.75 L460.39,637.55 L462.87,631.28 L465.35,624.94
L467.83,618.52 L470.31,612.03 L472.79,605.46 L475.27,598.82 L477.75,592.11 L480.23,585.33 L482.71,578.47 L485.19,571.54
L487.67,564.53 L490.15,557.45 L492.63,550.30 L495.11,543.08 L497.59,535.78 L500.07,528.44 L502.55,521.11 L505.03,513.77
L507.51,506.44 L509.99,499.10 L512.47,491.77 L514.95,484.43 L517.43,477.10 L519.91,469.76 L522.39,462.43 L524.87,455.09
L527.35,447.76 L529.83,440.46 L532.31,433.24 L534.79,426.09 L537.27,419.01 L539.75,412.00 L542.23,405.07 L544.71,398.21
L547.19,391.43 L549.67,384.72 L552.15,378.08 L554.63,371.51 L557.11,365.02 L559.59,358.60 L562.07,352.26 L564.55,345.99
L567.03,339.79 L569.51,333.66 L571.99,327.61 L574.47,321.63 L576.95,315.73 L579.43,309.90 L581.91,304.14 L584.39,298.46
L586.87,292.84 L589.35,287.31 L591.83,281.84 L594.31,276.45 L596.79,271.13 L599.27,265.89 L601.75,260.72 L604.23,255.62
L606.71,250.60 L609.19,245.64 L611.67,240.77 L614.15,235.96 L616.63,231.23 L619.11,226.57 L621.59,221.99 L624.07,217.48
L626.55,213.04 L629.03,208.68 L631.51,204.38 L633.99,200.17 L636.47,196.02 L638.95,191.95 L641.43,187.95 L643.91,184.03
L646.39,180.18 L648.87,176.40 L651.35,172.70 L653.83,169.07 L656.31,165.51 L658.79,162.03 L661.27,158.61 L663.75,155.28
L666.23,152.01 L668.71,148.82 L671.19,145.70 L673.67,142.66 L676.15,139.69 L678.63,136.79 L681.11,133.97 L683.59,131.22
L686.07,128.54 L688.55,125.94 L691.03,123.41 L693.51,120.95 L695.99,118.57 L698.47,116.25 L700.95,114.02 L703.43,111.85
L705.91,109.76 L708.39,107.75 L710.87,105.80 L713.35,103.93 L715.83,102.13 L718.31,100.41 L720.79,98.76 L723.27,97.18
L725.75,95.68 L728.23,94.25 L730.71,92.89 L733.19,91.61 L735.67,90.40 L738.15,89.26 L740.63,88.20 L743.11,87.21
L745.59,86.29 L748.07,85.45 L750.55,84.68 L753.03,83.98 L755.51,83.36 L757.99,82.81 L760.47,82.33 L762.95,81.93
L765.43,81.60 L767.91,81.34 L770.39,81.16 L772.87,81.05 L775.35,81.01 L777.83,81.01 L780.31,81.01 L782.79,81.01
L785.27,81.01 L787.75,81.01 L790.23,81.01 L792.71,81.01 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.03 L1053.11,81.12 L1055.59,81.28 L1058.07,81.52 L1060.55,81.83
L1063.03,82.22 L1065.51,82.67 L1067.99,83.20 L1070.47,83.81 L1072.95,84.48 L1075.43,85.24 L1077.91,86.06 L1080.39,86.96
L1082.87,87.93 L1085.35,88.97 L1087.83,90.09 L1090.31,91.28 L1092.79,92.54 L1095.27,93.88 L1097.75,95.29 L1100.23,96.78
L1102.71,98.33 L1105.19,99.96 L1107.67,101.67 L1110.15,103.45 L1112.63,105.30 L1115.11,107.22 L1117.59,109.22 L1120.07,111.29
L1122.55,113.43 L1125.03,115.65 L1127.51,117.94 L1129.99,120.31 L1132.47,122.74 L1134.95,125.25 L1137.43,127.84 L1139.91,130.50
L1142.39,133.23 L1144.87,136.03 L1147.35,138.91 L1149.83,141.86 L1152.31,144.89 L1154.79,147.98 L1157.27,151.15 L1159.75,154.40
L1162.23,157.72 L1164.71,161.11 L1167.19,164.57 L1169.67,168.11 L1172.15,171.72 L1174.63,175.41 L1177.11,179.16 L1179.59,183.00
L1182.07,186.90 L1184.55,190.88 L1187.03,194.93 L1189.51,199.05 L1191.99,203.25 L1194.47,207.52 L1196.95,211.87 L1199.43,216.29
L1201.91,220.78 L1204.39,225.34 L1206.87,229.98 L1209.35,234.69 L1211.83,239.48 L1214.31,244.34 L1216.79,249.27 L1219.27,254.27
L1221.75,259.35 L1224.23,264.50 L1226.71,269.73 L1229.19,275.03 L1231.67,280.40 L1234.15,285.84 L1236.63,291.36 L1239.11,296.95
L1241.59,302.62 L1244.07,308.36 L1246.55,314.17 L1249.03,320.05 L1251.51,326.01 L1253.99,332.04 L1256.47,338.15 L1258.95,344.33
L1261.43,350.58 L1263.91,356.90 L1266.39,363.30 L1268.87,369.77 L1271.35,376.32 L1273.83,382.94 L1276.31,389.63 L1278.79,396.40
L1281.27,403.23 L1283.75,410.15 L1286.23,417.13 L1288.71,424.19 L1291.19,431.32 L1293.67,438.53 L1296.15,445.81 L1298.63,453.14
L1301.11,460.47 L1303.59,467.81 L1306.07,475.14 L1308.55,482.48 L1311.03,489.81 L1313.51,497.15 L1315.99,504.48 L1318.47,511.82
L1320.95,519.15 L1323.43,526.49 L1325.91,533.82 L1328.39,541.16 L1330.87,548.49 L1333.35,555.83 L1335.83,563.16 L1338.31,570.50
L1340.79,577.83 L1343.27,585.17 L1345.75,592.50 L1348.23,599.82 L1350.71,607.06 L1353.19,614.23 L1355.67,621.33 L1358.15,628.36
L1360.63,635.31 L1363.11,642.19 L1365.59,648.99 L1368.07,655.72 L1370.55,662.38 L1373.03,668.96 L1375.51,675.47 L1377.99,681.91
L1380.47,688.28 L1382.95,694.57 L1385.43,700.79 L1387.91,706.93 L1390.39,713.00 L1392.87,719.00 L1395.35,724.92 L1397.83,730.77
L1400.31,736.55 L1402.79,742.26 L1405.27,747.89 L1407.75,753.44 L1410.23,758.93 L1412.71,764.34 L1415.19,769.68 L1417.67,774.94
L1420.15,780.13 L1422.63,785.25 L1425.11,790.29 L1427.59,795.26 L1430.07,800.16 L1432.55,804.98 L1435.03,809.73 L1437.51,814.41
L1439.99,819.02 L1442.47,823.55 L1444.95,828.00 L1447.43,832.39 L1449.91,836.70 L1452.39,840.94 L1454.87,845.10 L1457.35,849.19
L1459.83,853.21 L1462.31,857.15 L1464.79,861.02 L1467.27,864.82 L1469.75,868.54 L1472.23,872.19 L1474.71,875.77 L1477.19,879.27
L1479.67,882.70 L1482.15,886.06 L1484.63,889.34 L1487.11,892.55 L1489.59,895.69 L1492.07,898.75 L1494.55,901.74 L1497.03,904.66
L1499.51,907.51 L1501.99,910.28 L1504.47,912.97 L1506.95,915.60 L1509.43,918.15 L1511.91,920.62 L1514.39,923.03 L1516.87,925.36
L1519.35,927.61 L1521.83,929.80 L1524.31,931.91 L1526.79,933.94 L1529.27,935.91 L1531.75,937.80 L1534.23,939.61 L1536.71,941.36
L1539.19,943.03 L1541.67,944.62 L1544.15,946.15 L1546.63,947.60 L1549.11,948.97 L1551.59,950.28 L1554.07,951.51 L1556.55,952.66
L1559.03,953.75 L1561.51,954.76 L1563.99,955.69 L1566.47,956.55 L1568.95,957.34 L1571.43,958.06 L1573.91,958.70 L1576.39,959.27
L1578.87,959.77 L1581.35,960.19 L1583.83,960.54 L1586.31,960.82 L1588.79,961.02 L1591.27,961.15 L1593.75,961.21 L1594.41,961.21
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Velocity</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,123 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_BARS_H
#define MATPLOTPLUSPLUS_BARS_H
#include <matplot/detail/config.h>
#include <array>
#include <cmath>
#include <map>
#include <matplot/core/figure_type.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS bars : public axes_object {
public:
explicit bars(class axes_type *parent);
bars(class axes_type *parent, const std::vector<double> &y);
bars(class axes_type *parent,
const std::vector<std::vector<double>> &Y);
bars(class axes_type *parent, const std::vector<double> &x,
const std::vector<double> &y);
bars(class axes_type *parent, const std::vector<double> &x,
const std::vector<std::vector<double>> &Y);
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
bars(const axes_handle &parent, Args &&... args)
: bars(parent.get(), std::forward<Args>(args)...) {}
virtual ~bars() = default;
public /* xlim object virtual functions */:
// std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
// std::string unset_variables_string() override;
bool requires_colormap() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* useful functions for bars */:
double x_minimum_difference();
double x_end_point(size_t cluster_index, size_t index);
double cluster_width();
double range_for_cluster();
public /* getters and setters */:
const color_array &face_color() const;
class bars &face_color(const color_array &face_color);
class bars &face_color(const std::array<float, 3> &face_color);
class bars &face_color(std::initializer_list<float> face_color);
class bars &face_color(std::string_view color);
const std::vector<color_array> &face_colors() const;
std::vector<color_array> &face_colors();
class bars &face_colors(const std::vector<color_array> &face_colors);
bool manual_face_color() const;
class bars &manual_face_color(bool manual_face_color);
const color_array &edge_color() const;
class bars &edge_color(const color_array &edge_color);
class bars &edge_color(const std::array<float, 3> &edge_color);
class bars &edge_color(std::initializer_list<float> face_color);
class bars &edge_color(std::string_view edge_color);
const line_spec &edge_style() const;
class bars &edge_style(const line_spec &edge_style);
float line_width() const;
class bars &line_width(float line_width);
bool vertical_orientation() const;
class bars &vertical_orientation(bool vertical_orientation);
bool visible() const;
class bars &visible(bool visible);
float bar_width() const;
class bars &bar_width(float bar_width);
public /* getters and setters bypassing the bars_spec */:
private:
/// If the user has not set the face color,
/// we get a color from the xlim
void maybe_update_face_colors();
protected:
// original data
std::vector<double> x_;
std::vector<std::vector<double>> ys_;
// color and style
std::vector<color_array> face_colors_{{0.4f, 0, 0, 0}};
bool manual_face_color_{false};
color_array edge_color_{0, 0, 0, 0};
line_spec edge_style_{"-"};
float line_width_{0.5};
bool vertical_orientation_{true};
float bar_width_{0.8f};
float cluster_width_{0.8f};
// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_BARS_H

View File

@ -0,0 +1,147 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_BOX_CHART_H
#define MATPLOTPLUSPLUS_BOX_CHART_H
#include <matplot/detail/config.h>
#include <array>
#include <cmath>
#include <map>
#include <matplot/core/figure_type.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS box_chart : public axes_object {
public:
enum class box_style_option {
outline, // unfilled / dashed whiskers
filled, // filled / solid whiskers
violin, // show data distribution
};
public:
explicit box_chart(class axes_type *parent);
box_chart(class axes_type *parent, const std::vector<double> &y_data,
const std::vector<double> &groups = {});
// box_chart(class xlim* parent, const std::vector<double>& data,
// const std::vector<double>& edges, enum
// box_chart::normalization normalization_alg =
// box_chart::normalization::count); box_chart(class xlim*
// parent, const std::vector<double>& data, binning_algorithm
// algorithm = binning_algorithm::automatic,
// box_chart::normalization normalization_alg =
// box_chart::normalization::count);
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
box_chart(const axes_handle &parent, Args&&... args)
: box_chart(parent.get(), std::forward<Args>(args)...) {}
virtual ~box_chart() = default;
public /* xlim object virtual functions */:
std::string set_variables_string() override;
std::string plot_string() override;
// std::string legend_string(const std::string& title) override;
std::string data_string() override;
std::string unset_variables_string() override;
bool requires_colormap() override;
// double xmax() override;
// double xmin() override;
// double ymax() override;
// double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* useful functions for box_charts */:
public /* getters and setters */:
const std::vector<double> &y_data() const;
class box_chart &y_data(const std::vector<double> &y_data);
const std::vector<double> &x_data() const;
class box_chart &x_data(const std::vector<double> &x_data);
const color_array &face_color() const;
class box_chart &face_color(const color_array &face_color);
bool manual_face_color() const;
class box_chart &manual_face_color(bool manual_face_color);
const color_array &edge_color() const;
class box_chart &edge_color(const color_array &edge_color);
float edge_width() const;
class box_chart &edge_width(float edge_width);
enum line_spec::marker_style whisker_style() const;
class box_chart &
whisker_style(enum line_spec::marker_style whisker_style);
float whisker_size() const;
class box_chart &whisker_size(float whisker_size);
bool whisker_face() const;
class box_chart &whisker_face(bool whisker_face);
bool jitter_outliers() const;
class box_chart &jitter_outliers(bool jitter_outliers);
float box_width() const;
class box_chart &box_width(float box_width);
float cap_size() const;
class box_chart &cap_size(float cap_size);
public /* getters and setters bypassing the line_spec */:
box_style_option box_style() const;
class box_chart &box_style(box_style_option box_style);
private /* helper functions to generate the plot */:
void maybe_update_face_color();
protected:
// sample data
std::vector<double> y_data_;
// sample groups (same length as y_data_)
// this describes the groups and the positions at the same time
std::vector<double> x_data_;
// color and style
color_array face_color_{{0.4f, 0, 0, 0}};
bool manual_face_color_{false};
color_array edge_color_{0, 0, 0, 0};
float edge_width_{0.5};
enum line_spec::marker_style whisker_style_{
line_spec::marker_style::circle};
float whisker_size_{1.};
bool whisker_face_{false};
bool jitter_outliers_{false};
float box_width_{0.5};
box_style_option box_style_{box_style_option::filled};
float cap_size_{3.};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_BOX_CHART_H

View File

@ -0,0 +1,120 @@
//
// Created by Alan Freitas on 16/07/20.
//
#ifndef MATPLOTPLUSPLUS_CIRCLES_H
#define MATPLOTPLUSPLUS_CIRCLES_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/axis_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS circles : public axes_object {
public:
explicit circles(class axes_type *parent);
circles(class axes_type *parent, const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &radius = {},
const std::vector<double> &start_angle = {},
const std::vector<double> &end_angle = {},
const std::vector<double> &color = {});
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
circles(const axes_handle &parent, Args&&... args)
: circles(parent.get(), std::forward<Args>(args)...) {}
virtual ~circles() = default;
public /* mandatory virtual functions */:
// std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
// std::string unset_variables_string() override;
bool requires_colormap() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
const std::vector<double> &x() const;
class circles &x(const std::vector<double> &x);
const std::vector<double> &y() const;
class circles &y(const std::vector<double> &y);
const std::vector<double> &radius() const;
class circles &radius(const std::vector<double> &radius);
const std::vector<double> &start_angle() const;
class circles &start_angle(const std::vector<double> &start_angle);
const std::vector<double> &end_angle() const;
class circles &end_angle(const std::vector<double> &end_angle);
const std::vector<double> &color() const;
class circles &color(const std::vector<double> &color);
const labels_handle &labels() const;
class circles &labels(const labels_handle &labels);
const color_array &face_color() const;
class circles &face_color(const color_array &face_color);
float line_width() const;
class circles &line_width(float line_width);
const color_array &line_color() const;
class circles &line_color(const color_array &line_color);
bool visible() const;
class circles &visible(bool visible);
public /* getters and setters bypassing the line_spec */:
protected:
void maybe_update_circles_color();
protected:
std::vector<double> x_{}; // x position
std::vector<double> y_{}; // y position
std::vector<double> radius_{}; // 1
std::vector<double> start_angle_{}; // 0
std::vector<double> end_angle_{}; // 360
std::vector<double> color_{}; // colormap
// Labels around circles
labels_handle labels_;
// Style
color_array face_color_;
bool user_face_color_{false};
float line_width_{2.};
color_array line_color_{0., 0., 0., 0.};
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_CIRCLES_H

View File

@ -0,0 +1,291 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_CONTOURS_H
#define MATPLOTPLUSPLUS_CONTOURS_H
#include <matplot/detail/config.h>
#include <array>
#include <matplot/util/common.h>
#include <matplot/util/concepts.h>
#include <matplot/util/contourc.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
namespace matplot {
class axes_type;
/// Create and store a set of contour lines or filled regions.
/// We have a class just for contours instead of using the
/// gnuplot surface. So we include functions here to
/// calculate the contour lines outside gnuplot.
/// The reason is that converting the gnuplot contours to
/// 2d xlim involves workarounds a 3d map view or plotting to a
/// temporary table, that don't interact well with other 2d
/// objects. It's also no possible to plot filled contours
/// with gnuplot. At most, one can plot a very high resolution
/// under the contour lines, but this is very. The only
/// way to have full control of how the contour lines will look
/// like is to calculate the contour lines outside gnuplot,
/// even if our algorithm is not perfect.
class MATPLOT_EXPORTS contours : public axes_object {
public:
/// X, Y grids and their Z values
/// Every X column has the same value for all rows.
/// This value increases in the next column.
/// Every Y row has the same value for all columns.
/// This value increases in the next rows.
/// Thus, the high values indices represent values
/// that are graphically on the top:
/// (X[3][0], Y[3][0]) (X[3][1], Y[3][1]) (X[3][2], Y[3][2])
/// (X[2][0], Y[2][0]) (X[2][1], Y[2][1]) (X[2][2], Y[2][2])
/// (X[1][0], Y[1][0]) (X[1][1], Y[1][1]) (X[1][2], Y[1][2])
/// (X[0][0], Y[0][0]) (X[0][1], Y[0][1]) (X[0][2], Y[0][2])
/// \param parent Parent xlim
/// \param X X grid
/// \param Y Y grid
/// \param Z Z heights
/// \param line_spec Line properties
contours(class axes_type *parent, const vector_2d &X,
const vector_2d &Y, const vector_2d &Z,
std::string_view line_spec = "");
contours(class axes_type *parent, const vector_2d &Z,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
contours(const axes_handle &parent, Args &&... args)
: contours(parent.get(), std::forward<Args>(args)...) {}
virtual ~contours() = default;
public /* mandatory virtual functions */:
std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
bool requires_colormap() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
class contours &line_style(std::string_view line_spec);
const matplot::line_spec &line_spec() const;
matplot::line_spec &line_spec();
class contours &line_spec(const class line_spec &line_spec);
const vector_2d &Y_data() const;
class contours &Y_data(const vector_2d &Y_data);
const vector_2d &X_data() const;
class contours &X_data(const vector_2d &X_data);
const vector_2d &Z_data() const;
class contours &Z_data(const vector_2d &Z_data);
const vector_2d &x_data() const;
class contours &x_data(const vector_2d &x_data);
const vector_2d &y_data() const;
class contours &y_data(const vector_2d &y_data);
const vector_2d &z_data() const;
class contours &z_data(const vector_2d &z_data);
bool contour_text() const;
class contours &contour_text(bool contour_text);
float font_size() const;
class contours &font_size(const float &font_size);
const std::string font() const;
class contours &font(std::string_view font);
const std::string &font_weight() const;
class contours &font_weight(std::string_view font_weight);
const color_array &font_color() const;
class contours &font_color(const color_array &font_color);
class contours &font_color(std::string_view font_color);
bool visible() const;
class contours &visible(bool visible);
size_t n_levels() const;
class contours &n_levels(size_t n_levels);
const std::vector<double> &levels() const;
class contours &levels(const std::vector<double> &levels);
bool filled() const;
class contours &filled(bool filled);
bool colormap_line_when_filled() const;
class contours &
colormap_line_when_filled(bool colormap_line_when_filled);
public /* getters and setters bypassing the line_spec */:
float line_width() const;
class contours &line_width(float line_width);
const std::array<float, 4> &color() const;
template <class T> contours &color(T c) {
line_spec().color(c);
return *this;
}
inline class contours &color(std::initializer_list<float> c) {
line_spec().color(c);
return *this;
}
protected:
void make_sure_data_is_preprocessed();
void clear_preprocessed_data();
bool is_lower_level(size_t line_index, size_t segment_begin,
size_t segment_end);
std::pair<vector_1d, vector_1d>
fill_border_jump(double start_x, double start_y, double end_x,
double end_y, double x_min, double x_max, double y_min,
double y_max, bool is_parent);
public:
enum class extend_option { neither, min, max, both };
/// Determine some automatic contour levels for data ranging from z_min
/// to z_max Each library will use a different algorithm to determine
/// levels. In our case, this is similar to the algorithm for automatic
/// histogram edges. The difference is that the final histogram edges
/// fall outside the range [z_min,z_max] while we want all contour lines
/// to fall inside [z_min,z_max] Select contour levels to span the data.
// The target number of levels, *N*, is used only when the
// scale is not log and default locator is used.
//
// We need two more levels for filled contours than for
// line contours, because for the latter we need to specify
// the lower and upper boundary of each range.
//
// For example,
// a single contour boundary, say at z = 0, requires only
// one contour line, but two filled regions, and therefore
// three levels to provide boundaries for both regions.
/// Assign values to :attr:`layers` based on :attr:`levels`,
/// adding extended layers as needed if contours are filled.
/// For line contours, layers simply coincide with levels;
/// a line is a thin layer. No extended levels are needed
/// with line contours.
static std::vector<double>
determine_contour_levels(double z_min, double z_max, size_t n_levels_,
extend_option ext = extend_option::neither);
static std::vector<double>
determine_contour_levels(const vector_2d &Z, size_t n_levels_,
extend_option ext = extend_option::neither);
/// Return ``(lowers, uppers)`` levels for filled contours.
std::pair<vector_1d, vector_1d> get_lowers_and_uppers();
void process_contour_levels();
void initialize_preprocessed_data();
void check_xyz();
void initialize_x_y();
void process_all_segs_and_all_kinds();
double zmin() override;
double zmax() override;
protected:
/// Pre-processed contour lines
std::vector<QuadContourGenerator::vertices_list_type> lines_;
/// Pre-processed contour lines for filled plots
/// This uses another algorithm for pairs of levels
/// We generate the lines twice for filled plots because
/// the closed polygons of filled plots are not good enough
/// to represent everything.
/// Also, this makes it much easier to label the unfilled lines.
std::vector<QuadContourGenerator::vertices_list_type> filled_lines_;
/// These codes indicate what's happening in a filled line
/// Starting a polygon, closing a polygon, or middle of a polygon
std::vector<QuadContourGenerator::codes_list_type> codes_;
/// Object with the algorithm to generate contour lines
QuadContourGenerator contour_generator_;
/// Segments of filled contours
using level_index_type = size_t;
using begin_index_type = size_t;
using end_index_type = size_t;
using area_type = double;
using line_segment_type =
std::tuple<level_index_type, begin_index_type, end_index_type>;
using parent_and_children_type =
std::tuple<line_segment_type, std::vector<line_segment_type>,
area_type>;
std::vector<parent_and_children_type> line_segments_;
protected:
/// Line style
class line_spec line_spec_;
/// Data in the xlim
vector_2d X_data_{};
vector_2d Y_data_{};
vector_2d Z_data_{};
/// Parameters
size_t n_levels_{0};
bool manual_n_levels_{false};
std::vector<double> levels_{};
bool manual_levels_{false};
std::vector<double> _levels{};
std::vector<double> layers_ = {};
/// Style
bool filled_{false};
vector_1d linewidths_ = {};
bool antialiased_ = false;
bool _corner_mask = false;
bool colormap_line_when_filled_ = false;
/// Pre-processed data
std::vector<class line_spec> linestyles_{};
vector_1d extent_ = {};
std::vector<color_array> cmap_ = {};
std::vector<color_array> colors_ = {};
double norm_ = NaN;
double vmin_ = NaN;
double vmax_ = NaN;
extend_option extend_ = extend_option::neither;
size_t nchunk_ = 0;
double zmin_{NaN};
double zmax_{NaN};
/// Text around the lines
bool contour_text_{false};
std::optional<float> font_size_{std::nullopt};
std::optional<std::string> font_{std::nullopt};
std::string font_weight_{"normal"};
color_array font_color_{0, 0, 0, 0};
/// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_CONTOURS_H

View File

@ -0,0 +1,91 @@
//
// Created by Alan Freitas on 09/07/20.
//
#ifndef MATPLOTPLUSPLUS_ERROR_BAR_H
#define MATPLOTPLUSPLUS_ERROR_BAR_H
#include <matplot/detail/config.h>
#include <matplot/axes_objects/line.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS error_bar : public line {
public:
enum class type { vertical, horizontal, both };
public:
explicit error_bar(class axes_type *parent);
/// Construct with x and y error
error_bar(class axes_type *parent, const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &y_neg_delta,
const std::vector<double> &y_pos_delta,
const std::vector<double> &x_neg_delta,
const std::vector<double> &x_pos_delta,
std::string_view line_spec = "");
/// Construct with y error only
error_bar(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &error,
error_bar::type type = error_bar::type::vertical,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership of the xlim
template <class... Args>
error_bar(const axes_handle &parent, Args&&... args)
: error_bar(parent.get(), std::forward<Args>(args)...) {}
public /* override the plotting function for error_bar */:
std::string set_variables_string() override;
std::string plot_string() override;
std::string data_string() override;
bool requires_colormap() override;
std::string unset_variables_string() override;
enum axes_object::axes_category axes_category() override;
public /* methods for error_bar only */:
const std::vector<double> &x_negative_delta() const;
class error_bar &
x_negative_delta(const std::vector<double> &x_negative_delta);
const std::vector<double> &x_positive_delta() const;
class error_bar &
x_positive_delta(const std::vector<double> &x_positive_delta);
const std::vector<double> &y_negative_delta() const;
class error_bar &
y_negative_delta(const std::vector<double> &y_negative_delta);
const std::vector<double> &y_positive_delta() const;
class error_bar &
y_positive_delta(const std::vector<double> &y_positive_delta);
float filled_curve_alpha() const;
class error_bar &filled_curve_alpha(float filled_curve_alpha);
bool filled_curve() const;
class error_bar &filled_curve(bool filled_curve);
float cap_size() const;
class error_bar &cap_size(float cap_size);
protected:
std::vector<double> x_negative_delta_{};
std::vector<double> x_positive_delta_{};
std::vector<double> y_negative_delta_{};
std::vector<double> y_positive_delta_{};
bool filled_curve_{false};
float filled_curve_alpha_{0.9f};
float cap_size_{3.};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_ERROR_BAR_H

View File

@ -0,0 +1,69 @@
//
// Created by Alan Freitas on 09/07/20.
//
#ifndef MATPLOTPLUSPLUS_FILLED_AREA_H
#define MATPLOTPLUSPLUS_FILLED_AREA_H
#include <matplot/detail/config.h>
#include <matplot/axes_objects/line.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS filled_area : public line {
public:
enum class type { vertical, horizontal, both };
public:
explicit filled_area(class axes_type *parent);
/// Construct with x and y error
filled_area(class axes_type *parent, const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &base_values = {0.},
bool stacked = true, std::string_view line_spec = "k-");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership of the xlim
template <class... Args>
filled_area(const axes_handle &parent, Args&&... args)
: filled_area(parent.get(), std::forward<Args>(args)...) {}
public /* override the plotting function for filled_area */:
std::string plot_string() override;
std::string data_string() override;
enum axes_object::axes_category axes_category() override;
public /* methods for filled_area only */:
bool stacked() const;
class filled_area &stacked(bool stacked);
const std::vector<double> &base_data() const;
class filled_area &base_data(const std::vector<double> &base_data);
bool plot_base_line() const;
class filled_area &plot_base_line(bool plot_base_line);
const color_array &face_color() const;
class filled_area &face_color(const color_array &face_color);
bool fill_user_color() const;
class filled_area &fill_user_color(bool fill_user_color);
private:
void maybe_update_face_color();
protected:
bool stacked_{true};
std::vector<double> base_data_{0.};
bool plot_base_line_{true};
color_array face_color_{0, 0, 0, 0};
bool fill_user_color_{false};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_FILLED_AREA_H

View File

@ -0,0 +1,85 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_FUNCTION_LINE_H
#define MATPLOTPLUSPLUS_FUNCTION_LINE_H
#include <matplot/detail/config.h>
#include <matplot/axes_objects/line.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/handle_types.h>
#include <string>
namespace matplot {
class MATPLOT_EXPORTS function_line : public line {
public:
using function_type = std::function<double(double)>;
public:
explicit function_line(class axes_type *parent);
function_line(class axes_type *parent, const function_type &equation,
std::array<double, 2> x_range = {-5, 5},
std::string_view line_spec = "");
function_line(class axes_type *parent, const function_type &function_x,
const function_type &function_y,
std::array<double, 2> t_range = {-5, 5},
std::string_view line_spec = "");
function_line(class axes_type *parent, const function_type &function_x,
const function_type &function_y,
const function_type &function_z,
std::array<double, 2> t_range = {-5, 5},
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
function_line(const axes_handle &parent, Args&&... args)
: function_line(parent.get(), std::forward<Args>(args)...) {}
public:
std::string plot_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public:
const function_type &fn() const;
class function_line &fn(const function_type &fn);
class function_line &tmin(double x);
class function_line &tmax(double x);
double tmin();
double tmax();
const std::array<double, 2> &t_range() const;
class function_line &t_range(const std::array<double, 2> &t_range);
class function_line &t_range(double t_min, double t_max);
size_t mesh_density() const;
class function_line &mesh_density(size_t mesh_density);
bool automatic_mesh_density() const;
class function_line &
automatic_mesh_density(bool automatic_mesh_density);
private:
void make_sure_data_is_preprocessed();
private:
std::array<double, 2> t_range_;
std::vector<double> t_data_{};
size_t mesh_density_{30};
bool automatic_mesh_density_{true};
function_type fn_x_{nullptr};
function_type fn_y_{nullptr};
function_type fn_z_{nullptr};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_FUNCTION_LINE_H

View File

@ -0,0 +1,269 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_HISTOGRAM_H
#define MATPLOTPLUSPLUS_HISTOGRAM_H
#include <matplot/detail/config.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <array>
#include <cmath>
#include <map>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS histogram : public axes_object {
public:
// source code in 'edit histcount'
enum class binning_algorithm {
automatic, // Scott's rule for doubles or integers rule for data
// distributed around integers
scott, // Scotts rule - bin_width = 3.5*std(x)*|X|^(-1/3)
fd, // Freedman-Diaconis rule - bin width =
// 2*IQR(X(:))*numel(X)^(-1/3) (for heavy tailed distributions,
// less sensitive to outliers) - IQR = interquartile range of X
integers, // Integer rule - bin width = 1
sturges, // Sturges' rule - number of bins = ceil(1+log2(numel(X)))
sqrt // Square root rule - number of bins = ceil(sqrt(numel(X)))
};
enum class normalization {
count, // value_i = count_i
count_density, // value_i = count_i / bin_width_i
cummulative_count, // value_i = sum_j=1^i count_j
probability, // value_i = count_i / size -> (sum(heights) <= 1)
pdf, // value_i = count_i / (size * width_i) -> (sum(areas) <= 1)
cdf // value_i = sum_j=1^i count_j / size
};
public:
explicit histogram(class axes_type *parent);
histogram(class axes_type *parent, const std::vector<double> &data,
size_t n_bins,
enum histogram::normalization normalization_alg =
histogram::normalization::count);
histogram(class axes_type *parent, const std::vector<double> &data,
const std::vector<double> &edges,
enum histogram::normalization normalization_alg =
histogram::normalization::count);
histogram(class axes_type *parent, const std::vector<double> &data,
binning_algorithm algorithm = binning_algorithm::automatic,
histogram::normalization normalization_alg =
histogram::normalization::count);
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
histogram(const axes_handle &parent, Args&&... args)
: histogram(parent.get(), std::forward<Args>(args)...) {}
virtual ~histogram() = default;
public /* xlim object virtual functions */:
// std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
// std::string unset_variables_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* useful functions for histograms */:
/// Increase number of bins
size_t morebins(double bin_increase = 0.1);
/// Decrease number of bins
size_t fewerbins(double bin_decrease = 0.1);
/// Find appropriate edges given a fixed number of bins and target bin
/// width If nbins == 0, round the bin width and create
/// (xmax-xmin)/bin_width bins If nbins != 0, bin width is set to
/// (xmax-xmin)/nbins and create nbins bins
static std::vector<double> bin_picker(double xmin, double xmax,
size_t nbins, double bin_width);
/// Find appropriate edges with a given algorithm
static std::vector<double> histogram_edges(
const std::vector<double> &data, double minx, double maxx,
binning_algorithm algorithm = binning_algorithm::automatic,
bool hard_limits = false);
/// Count points within each pair of edges
static std::vector<size_t>
histogram_count(const std::vector<double> &values,
const std::vector<double> &edges);
/// Normalize the instagram count
static std::vector<double>
histogram_normalize(const std::vector<size_t> &bin_count,
const std::vector<double> &bin_edges,
size_t data_size,
enum normalization normalization_algorithm);
public /* getters and setters */:
const std::vector<double> &data() const;
class histogram &data(const std::vector<double> &data);
const std::vector<double> &values() const;
class histogram &values(const std::vector<double> &values);
const std::vector<size_t> &bin_counts() const;
class histogram &bin_counts(const std::vector<size_t> &bin_counts);
size_t num_bins();
class histogram &num_bins(size_t num_bins);
binning_algorithm algorithm() const;
class histogram &algorithm(binning_algorithm algorithm);
std::vector<double> &bin_edges();
class histogram &bin_edges(const std::vector<double> &bin_edges);
double bin_width() const;
class histogram &bin_width(double bin_width);
double bin_limits_min() const;
class histogram &bin_limits_min(double bin_limits_min);
double bin_limits_max() const;
class histogram &bin_limits_max(double bin_limits_max);
normalization normalization() const;
class histogram &normalization(enum normalization normalization);
const color_array &face_color() const;
class histogram &face_color(const color_array &face_color);
class histogram &face_color(std::initializer_list<float> face_color);
class histogram &face_color(std::string_view color);
class histogram &face_alpha(float alpha);
class histogram &edge_alpha(float alpha);
bool manual_face_color() const;
class histogram &manual_face_color(bool manual_face_color);
const color_array &edge_color() const;
class histogram &edge_color(const color_array &edge_color);
class histogram &edge_color(std::initializer_list<float> face_color);
class histogram &edge_color(std::string_view edge_color);
const line_spec &edge_style() const;
class histogram &edge_style(const line_spec &edge_style);
float line_width() const;
class histogram &line_width(float line_width);
bool vertical_orientation() const;
class histogram &vertical_orientation(bool vertical_orientation);
bool visible() const;
class histogram &visible(bool visible);
float bar_width() const;
class histogram &bar_width(float bar_width);
bool polar() const;
class histogram &polar(bool polar);
bool stairs_only() const;
class histogram &stairs_only(bool stairs_only);
/// Algorithms to determine histogram edges
static std::vector<double> scotts_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
static std::vector<double> fd_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
static std::vector<double> integers_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
static std::vector<double> sqrt_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
static std::vector<double> sturges_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
static std::vector<double> automatic_rule(const std::vector<double> &x,
double minx, double maxx,
bool hard_limits);
public /* getters and setters bypassing the histogram_spec */:
private:
/// If the user has not set the face color,
/// we get a color from the xlim
void maybe_update_face_color();
/// Make sure we have already calculated the normalized values
/// for the current parameters. We reset the normalized values
/// every time the user changes the algorithm.
void make_sure_data_is_preprocessed();
protected:
// original data
std::vector<double> data_;
// normalized values (in the simplest case, values_ = bin_counts_)
std::vector<double> values_;
// number of elements in each bin
std::vector<size_t> bin_counts_;
// target num of bins (0 indicates no target: the algorithm should
// decide)
size_t num_bins_{0};
// algorithm we use to create the bins
binning_algorithm algorithm_;
// where edges start
std::vector<double> bin_edges_;
// binning mode
enum binning_mode_type {
use_algorithm, // use algorithm to decide everything
use_bin_limits, // use algorithm with bin limits
use_fixed_num_bins, // use fixed num of bins
use_fixed_bin_width, // use fixed num of bins
use_fixed_edges, // use fixed edges, including edges of variable
// size
};
binning_mode_type binning_mode_{binning_mode_type::use_algorithm};
// bin width (if zero, the algorithm determines the bin width)
double bin_width_{0.0};
// bin limits
double bin_limits_min_;
double bin_limits_max_;
// normalization algorithm
enum normalization normalization_ { normalization::count };
// color and style
color_array face_color_{0.4f, 0, 0, 0};
bool manual_face_color_{false};
color_array edge_color_{0, 0, 0, 0};
bool manual_edge_color_{false};
line_spec edge_style_{"-"};
float line_width_{0.5};
bool vertical_orientation_{true};
float bar_width_{1.0};
bool polar_{false};
bool stairs_only_{false};
// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_HISTOGRAM_H

View File

@ -0,0 +1,112 @@
//
// Created by Alan Freitas on 16/07/20.
//
#ifndef MATPLOTPLUSPLUS_LABELS_H
#define MATPLOTPLUSPLUS_LABELS_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/axis_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS labels : public axes_object {
public:
enum alignment { left, right, center, automatic };
public:
static constexpr double width_factor = 0.04;
static constexpr double height_factor = 0.08;
public:
explicit labels(class axes_type *parent);
labels(class axes_type *parent, const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<std::string> &labels = {},
const std::vector<double> &color = {},
const std::vector<double> &sizes = {});
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
labels(const axes_handle &parent, Args&&... args)
: labels(parent.get(), std::forward<Args>(args)...) {}
virtual ~labels() = default;
public /* mandatory virtual functions */:
std::string set_variables_string() override;
std::string plot_string() override;
// std::string legend_string(const std::string& title) override;
std::string data_string() override;
std::string unset_variables_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
bool rectangles() const;
class labels &rectangles(bool rectangles);
bool absolute_size() const;
class labels &absolute_size(bool absolute_size);
enum alignment alignment() const;
class labels &alignment(enum alignment alignment);
const std::vector<double> &x() const;
class labels &x(const std::vector<double> &x);
const std::vector<double> &y() const;
class labels &y(const std::vector<double> &y);
const std::vector<std::string> &label_values() const;
class labels &label_values(const std::vector<std::string> &labels);
const std::vector<double> &colors() const;
class labels &colors(const std::vector<double> &colors);
const std::vector<double> &sizes() const;
class labels &sizes(const std::vector<double> &sizes);
bool visible() const;
class labels &visible(bool visible);
const color_array &color() const;
class labels &color(const color_array &color);
template <class T> labels &color(T c) {
color(to_array(c));
return *this;
}
const std::string &font() const;
class labels &font(std::string_view font);
float font_size() const;
class labels &font_size(float font_size);
public /* getters and setters bypassing the line_spec */:
protected:
class line_spec line_spec_;
std::vector<double> x_{}; // x position
std::vector<double> y_{}; // y position
std::vector<std::string> labels_{}; // 1
std::vector<double> colors_{}; // colormap
std::vector<double> sizes_{}; // colormap
bool rectangles_{false}; // plot rectangles behind the words
bool absolute_size_{true}; // reduce font size for
bool visible_{true};
enum alignment alignment_ { alignment::automatic };
std::string font_{"Helvetica"};
float font_size_{10};
color_array color_{0, 0, 0, 0};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_LABELS_H

View File

@ -0,0 +1,198 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_LINE_H
#define MATPLOTPLUSPLUS_LINE_H
#include <matplot/detail/config.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <array>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS line : public axes_object {
public:
explicit line(class axes_type *parent);
line(class axes_type *parent, const std::vector<double> &y_data,
std::string_view line_spec = "");
line(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
std::string_view line_spec = "");
line(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &z_data,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
line(const axes_handle &parent, Args &&... args)
: line(parent.get(), std::forward<Args>(args)...) {}
virtual ~line() = default;
public /* mandatory virtual functions */:
void run_draw_commands() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
bool requires_colormap() override;
public /* getters and setters */:
class line &line_style(std::string_view line_spec);
const matplot::line_spec &line_spec() const;
matplot::line_spec &line_spec();
class line &line_spec(const class line_spec &line_spec);
const std::vector<double> &y_data() const;
class line &y_data(const std::vector<double> &y_data);
const std::vector<double> &x_data() const;
class line &x_data(const std::vector<double> &x_data);
const std::vector<double> &z_data() const;
class line &z_data(const std::vector<double> &z_data);
const std::vector<size_t> &marker_indices() const;
class line &marker_indices(const std::vector<size_t> &marker_indices);
bool use_y2() const;
class line &use_y2(bool use_y_2);
bool impulse() const;
class line &impulse(bool impulse);
bool fill() const;
class line &fill(bool fill);
bool use_y_2() const;
class line &use_y_2(bool use_y_2);
bool polar() const;
class line &polar(bool polar);
bool visible() const;
class line &visible(bool visible);
public /* getters and setters bypassing the line_spec */:
float line_width() const;
class line &line_width(float line_width);
enum line_spec::marker_style marker_style() const;
template <class T> line &marker_style(T marker_style) {
line_spec_.marker_style(marker_style);
return *this;
}
enum line_spec::marker_style marker() const;
template <class T> line &marker(T marker) {
line_spec_.marker(marker);
return *this;
}
float marker_size() const;
class line &marker_size(float size);
class line &marker_size(const std::vector<float> &size_vector);
class line &marker_size(const std::vector<double> &size_vector);
bool marker_face() const;
class line &marker_face(bool size);
const std::array<float, 4> &color() const;
template <class T> line &color(T c) {
line_spec().color(c);
return *this;
}
inline class line &color(std::initializer_list<float> c) {
line_spec().color(c);
return *this;
}
const std::array<float, 4> &marker_color() const;
template <class T> line &marker_color(T c) {
line_spec().marker_color(c);
return *this;
}
inline class line &marker_color(std::initializer_list<float> c) {
line_spec().marker_color(c);
return *this;
}
inline class line &marker_colors(const std::vector<double> &cs) {
marker_colors_ = cs;
touch();
return *this;
}
const std::array<float, 4> &marker_face_color() const;
template <class T> line &marker_face_color(T c) {
line_spec().marker_face_color(c);
return *this;
}
inline class line &marker_face_color(std::initializer_list<float> c) {
line_spec().marker_face_color(c);
return *this;
}
inline float marker_face_alpha() {
return line_spec().marker_face_alpha();
}
inline class line &marker_face_alpha(float a) {
line_spec().marker_face_alpha(a);
return *this;
}
protected:
virtual std::vector<line_spec::style_to_plot> styles_to_plot();
void maybe_update_line_spec();
protected:
/// Line style
matplot::line_spec line_spec_;
/// Data in the xlim
std::vector<double> y_data_{};
std::vector<double> x_data_{};
std::vector<double> z_data_{};
/// Positions at which we want markers to appear
std::vector<size_t> marker_indices_{};
std::vector<float> marker_sizes_{};
std::vector<double> marker_colors_{};
/// Draw line as impulse
bool impulse_{false};
/// Draw line as filled area
bool fill_{false};
/// Use the y2 xlim
bool use_y2_{false};
/// This line is meant for a polar plot
bool polar_{false};
/// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_LINE_H

View File

@ -0,0 +1,156 @@
//
// Created by Alan Freitas on 16/07/20.
//
#ifndef MATPLOTPLUSPLUS_MATRIX_H
#define MATPLOTPLUSPLUS_MATRIX_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/axis_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS matrix : public axes_object {
public:
enum class color_normalization { none, rows, columns };
public:
explicit matrix(class axes_type *parent);
/// Heatmap
/// Matrix of values that can be any double
matrix(class axes_type *parent,
const std::vector<std::vector<double>> &matrix);
/// Matrix with an rgb image
matrix(class axes_type *parent,
const std::vector<std::vector<double>> &red_channel,
const std::vector<std::vector<double>> &green_channel,
const std::vector<std::vector<double>> &blue_channel,
const std::vector<std::vector<double>> &alpha_channel = {});
/// Matrix with a b&w image
matrix(class axes_type *parent, const image_channel_t &gray_image);
/// Matrix with an rgb image
matrix(class axes_type *parent, const image_channel_t &red_channel,
const image_channel_t &green_channel,
const image_channel_t &blue_channel,
const image_channel_t &alpha_channel = {});
/// Matrices with an image
matrix(class axes_type *parent, const image_channels_t &rgb_image);
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
matrix(const axes_handle &parent, Args &&... args)
: matrix(parent.get(), std::forward<Args>(args)...) {}
virtual ~matrix() = default;
public /* mandatory virtual functions */:
// std::string set_variables_string() override;
std::string plot_string() override;
// std::string legend_string(const std::string& title) override;
std::string data_string() override;
// std::string unset_variables_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
color_normalization normalization() const;
class matrix &normalization(color_normalization normalization);
const std::vector<std::vector<double>> &matrix_r() const;
class matrix &
matrix_r(const std::vector<std::vector<double>> &matrix_r);
const std::vector<std::vector<double>> &matrix_g() const;
class matrix &
matrix_g(const std::vector<std::vector<double>> &matrix_g);
const std::vector<std::vector<double>> &matrix_b() const;
class matrix &
matrix_b(const std::vector<std::vector<double>> &matrix_b);
const std::vector<std::vector<double>> &matrix_a() const;
class matrix &
matrix_a(const std::vector<std::vector<double>> &matrix_a);
bool always_hide_labels() const;
class matrix &always_hide_labels(bool always_hide_labels);
double x() const;
class matrix &x(double x);
double y() const;
class matrix &y(double y);
double w() const;
class matrix &w(double w);
double h() const;
class matrix &h(double h);
double alpha() const;
class matrix &alpha(double alpha);
public /* functions for matrixes */:
/// Matrix has three channels
bool is_rgb() const;
/// Matrix has 4 channels
bool is_rgba() const;
/// A matrix might have alpha because of an
/// alpha channels or because alpha_ != 0.
/// In both cases we have a rgba matrix
bool has_alpha() const;
private:
bool should_plot_labels();
void setup_axes();
std::string matrix_data_string();
std::string image_data_string();
std::string labels_data_string();
inline double x_width() {
return (w_ - 1) / static_cast<double>(matrices_[0][0].size() - 1);
}
inline double y_width() { return (h_ - 1) / static_cast<double>(matrices_[0].size() - 1); }
protected:
// Main matrix
std::vector<std::vector<std::vector<double>>> matrices_{};
// For heatmaps or 1 matrix
color_normalization normalization_{color_normalization::none};
// Matrix placement
double x_{1};
double y_{1};
double w_{0.};
double h_{0.};
// Style
bool always_hide_labels_{false};
labels_handle labels_;
double alpha_ = 0.0;
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_MATRIX_H

View File

@ -0,0 +1,278 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_NETWORK_H
#define MATPLOTPLUSPLUS_NETWORK_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
#include <array>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS network : public axes_object {
public:
enum class layout { automatic, force, circle, kawai, random };
public:
explicit network(class axes_type *parent);
network(class axes_type *parent,
const std::vector<std::pair<size_t, size_t>> &edges,
const std::vector<double> &weights, size_t n_vertices,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
network(const axes_handle &parent, Args &&...args)
: network(parent.get(), std::forward<Args>(args)...) {}
virtual ~network() = default;
public /* mandatory virtual functions */:
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
class network &line_style(std::string_view line_spec);
const matplot::line_spec &line_spec() const;
matplot::line_spec &line_spec();
class network &line_spec(const class line_spec &line_spec);
const std::vector<double> &y_data() const;
class network &y_data(const std::vector<double> &y_data);
const std::vector<double> &x_data() const;
class network &x_data(const std::vector<double> &x_data);
const std::vector<double> &z_data() const;
class network &z_data(const std::vector<double> &z_data);
const std::vector<size_t> &marker_indices() const;
class network &
marker_indices(const std::vector<size_t> &marker_indices);
bool use_y2() const;
class network &use_y2(bool use_y_2);
bool use_y_2() const;
class network &use_y_2(bool use_y_2);
bool show_labels() const;
class network &show_labels(bool show_labels);
bool directed() const;
class network &directed(bool directed);
const std::vector<std::string> &edge_labels() const;
class network &edge_labels(const std::vector<std::string> &edge_labels);
template <class C>
network &edge_labels(const IterableValues<C> &e_labels) {
std::vector<std::string> str_labels;
std::stringstream ss;
ss.precision(10);
ss << std::fixed;
for (const auto &edge_label : e_labels) {
ss << "{/:Italic " << edge_label << " }";
str_labels.emplace_back(ss.str());
ss.str("");
}
edge_labels(str_labels);
return *this;
}
const std::vector<std::string> &node_labels() const;
class network &node_labels(const std::vector<std::string> &node_labels);
template <class C>
network &node_labels(const IterableValues<C> &e_labels) {
std::vector<std::string> str_labels;
std::stringstream ss;
ss.precision(10);
ss << std::fixed;
for (const auto &edge_label : e_labels) {
ss << edge_label;
str_labels.emplace_back(ss.str());
ss.str("");
}
node_labels(str_labels);
return *this;
}
const std::vector<double> &line_widths() const;
class network &line_widths(const std::vector<double> &line_widths);
const std::vector<std::pair<size_t, size_t>> &edges() const;
class network &
edges(const std::vector<std::pair<size_t, size_t>> &edges);
class network &n_vertices(size_t n_vertices);
const vector_1d &weights() const;
class network &weights(const vector_1d &weights);
layout layout_algorithm() const;
class network &layout_algorithm(layout layout_algorithm);
double layout_k() const;
class network &layout_k(double layout_k);
int layout_iterations() const;
class network &layout_iterations(int layout_iterations);
double energy_threshold() const;
class network &energy_threshold(double energy_threshold);
const std::vector<float> &marker_sizes() const;
class network &marker_sizes(const std::vector<float> &marker_sizes);
const std::vector<double> &marker_colors() const;
bool visible() const;
class network &visible(bool visible);
public /* getters and setters bypassing the line_spec */:
float line_width() const;
class network &line_width(float line_width);
enum line_spec::marker_style marker_style() const;
template <class T> network &marker_style(T marker_style) {
line_spec_.marker_style(marker_style);
return *this;
}
enum line_spec::marker_style marker() const;
template <class T> network &marker(T marker) {
line_spec_.marker(marker);
return *this;
}
float marker_size() const;
class network &marker_size(float size);
class network &marker_size(const std::vector<float> &size_vector);
class network &marker_size(const std::vector<double> &size_vector);
bool marker_face() const;
class network &marker_face(bool size);
const std::array<float, 4> &color() const;
template <class T> network &color(T c) {
line_spec().color(c);
return *this;
}
inline class network &color(std::initializer_list<float> c) {
line_spec().color(c);
return *this;
}
const std::array<float, 4> &marker_color() const;
template <class T> network &marker_color(T c) {
line_spec().marker_color(c);
return *this;
}
template <class T> network &node_color(T c) {
marker_color(c);
return *this;
}
inline class network &marker_color(std::initializer_list<float> c) {
line_spec().marker_color(c);
return *this;
}
inline class network &marker_colors(const std::vector<double> &cs) {
marker_colors_ = cs;
touch();
return *this;
}
const std::array<float, 4> &marker_face_color() const;
template <class T> network &marker_face_color(T c) {
line_spec().marker_face_color(c);
return *this;
}
inline class network &
marker_face_color(std::initializer_list<float> c) {
line_spec().marker_face_color(c);
return *this;
}
inline float marker_face_alpha() {
return line_spec().marker_face_alpha();
}
inline class network &marker_face_alpha(float a) {
line_spec().marker_face_alpha(a);
return *this;
}
size_t n_vertices();
protected:
virtual std::vector<line_spec::style_to_plot> styles_to_plot();
void maybe_update_line_spec();
void maybe_update_graph_layout();
void infer_n_vertices();
void process_random_layout();
void process_force_layout();
void process_circle_layout();
void process_kawai_layout();
protected:
/// Line style
class line_spec line_spec_;
/// Original graph
std::vector<std::pair<size_t, size_t>> edges_{};
/// The number of number is declared by the user or infered from the
/// edges
size_t n_vertices_{0};
/// Weight for each edge
vector_1d weights_{0};
/// True for directed graphs
bool directed_{false};
/// Data in the xlim
layout layout_algorithm_{layout::automatic};
double layout_k_ = -1.;
int layout_iterations_ = -1;
double energy_threshold_ = 1e-2;
std::vector<double> x_data_{};
std::vector<double> y_data_{};
std::vector<double> z_data_{};
/// Style
std::vector<float> marker_sizes_{};
std::vector<double> marker_colors_{};
bool show_labels_{true};
std::vector<std::string> edge_labels_{};
std::vector<std::string> node_labels_{};
std::vector<double> line_widths_{};
/// Use the y2 xlim
bool use_y2_{false};
/// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_NETWORK_H

View File

@ -0,0 +1,81 @@
//
// Created by Alan Freitas on 15/07/20.
//
#ifndef MATPLOTPLUSPLUS_PARALLEL_LINES_H
#define MATPLOTPLUSPLUS_PARALLEL_LINES_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/axis_type.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS parallel_lines : public axes_object {
public:
explicit parallel_lines(class axes_type *parent);
parallel_lines(class axes_type *parent,
const std::vector<std::vector<double>> &data,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
parallel_lines(const axes_handle &parent, Args&&... args)
: parallel_lines(parent.get(), std::forward<Args>(args)...) {}
virtual ~parallel_lines() = default;
public /* mandatory virtual functions */:
std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
std::string unset_variables_string() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
const matplot::line_spec &line_spec() const;
class parallel_lines &line_spec(const matplot::line_spec &line_spec);
const std::vector<std::vector<double>> &data() const;
class parallel_lines &
data(const std::vector<std::vector<double>> &data);
const std::vector<class axis_type> &axis() const;
std::vector<class axis_type> &axis();
class parallel_lines &axis(const std::vector<class axis_type> &axis);
bool visible() const;
class parallel_lines &visible(bool visible);
bool jitter() const;
class parallel_lines &jitter(bool jitter);
const std::vector<float> &line_widths() const;
class parallel_lines &
line_widths(const std::vector<float> &line_widths);
const std::vector<double> &line_colors() const;
class parallel_lines &
line_colors(const std::vector<double> &line_colors);
public /* getters and setters bypassing the line_spec */:
protected:
void maybe_update_line_spec();
protected:
class line_spec line_spec_;
std::vector<std::vector<double>> data_{};
std::vector<class axis_type> axis_{};
std::vector<float> line_widths_{};
std::vector<double> line_colors_{};
bool jitter_{true};
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_PARALLEL_LINES_H

View File

@ -0,0 +1,66 @@
//
// Created by Alan Freitas on 09/07/20.
//
#ifndef MATPLOTPLUSPLUS_STAIR_H
#define MATPLOTPLUSPLUS_STAIR_H
#include <matplot/detail/config.h>
#include <matplot/axes_objects/line.h>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS stair : public line {
public:
enum class stair_style {
// trace change in x, then change in y
trace_x_first,
// trace change in y, then change in x
trace_y_first,
// histogram mode: trace
// (i) half change in x,
// (ii) then change in y,
// (iii) then half the change in x
histogram,
// fill change in x, then fill change in y
fill
};
public:
explicit stair(class axes_type *parent);
stair(class axes_type *parent, const std::vector<double> &y_data,
std::string_view line_spec = "");
stair(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
stair(const axes_handle &parent, Args&&... args)
: stair(parent.get(), std::forward<Args>(args)...) {}
public /* override the plotting function for stair */:
std::string plot_string() override;
// std::string data_string() override;
enum axes_object::axes_category axes_category() override;
public /* methods for stair only */:
stair_style stair_style() const;
class stair &stair_style(enum stair_style stair_style);
bool fill() const;
class stair &fill(bool fill);
protected:
std::vector<line_spec::style_to_plot> styles_to_plot() override;
protected:
enum stair_style stair_style_ { stair_style::trace_x_first };
bool fill_{false};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_STAIR_H

View File

@ -0,0 +1,45 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_STRING_FUNCTION_H
#define MATPLOTPLUSPLUS_STRING_FUNCTION_H
#include <matplot/detail/config.h>
#include <matplot/axes_objects/line.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/handle_types.h>
#include <string>
namespace matplot {
class MATPLOT_EXPORTS string_function : public line {
public:
explicit string_function(class axes_type *parent);
string_function(class axes_type *parent, std::string_view equation,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
string_function(const axes_handle &parent, Args&&... args)
: string_function(parent.get(), std::forward<Args>(args)...) {}
public:
std::string plot_string() override;
std::string data_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public:
const std::string &equation() const;
class string_function &equation(std::string_view equation);
private:
std::string equation_;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_STRING_FUNCTION_H

View File

@ -0,0 +1,254 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_SURFACE_H
#define MATPLOTPLUSPLUS_SURFACE_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
#include <matplot/util/common.h>
#include <array>
#include <optional>
namespace matplot {
class axes_type;
/// Surfaces might include data for contours but, if you only want contours,
/// it's best to use the contour, contourf, fcontour functions to plot it in
/// 2d
class MATPLOT_EXPORTS surface : public axes_object {
public:
explicit surface(class axes_type *parent);
/// Grid surface
surface(class axes_type *parent, const vector_2d &X, const vector_2d &Y,
const vector_2d &Z, const vector_2d &C,
std::string_view line_spec = "");
/// Parametric surface
// surface(class xlim* parent, const vector_1d& x, const
// vector_1d& y, const vector_1d& z, const vector_1d& c, const
// std::string& line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
surface(const axes_handle &parent, Args&&... args)
: surface(parent.get(), std::forward<Args>(args)...) {}
virtual ~surface() = default;
public /* mandatory virtual functions */:
std::string set_variables_string() override;
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
class surface &line_style(std::string_view line_spec);
const matplot::line_spec &line_spec() const;
matplot::line_spec &line_spec();
class surface &line_spec(const class line_spec &line_spec);
const vector_2d &Y_data() const;
class surface &Y_data(const vector_2d &Y_data);
const vector_2d &X_data() const;
class surface &X_data(const vector_2d &X_data);
const vector_2d &Z_data() const;
class surface &Z_data(const vector_2d &Z_data);
size_t norm() const;
class surface &norm(size_t norm);
const vector_2d &x_data() const;
class surface &x_data(const vector_2d &x_data);
const vector_2d &y_data() const;
class surface &y_data(const vector_2d &y_data);
const vector_2d &z_data() const;
class surface &z_data(const vector_2d &z_data);
bool hidden_3d() const;
class surface &hidden_3d(bool hidden_3_d);
bool surface_visible() const;
class surface &surface_visible(bool surface_visible);
bool surface_in_2d() const;
class surface &surface_in_2d(bool surface_in_2d);
bool palette_map_at_bottom() const;
class surface &palette_map_at_bottom(bool palette_map_at_bottom);
bool palette_map_at_surface() const;
class surface &palette_map_at_surface(bool palette_map_at_surface);
bool palette_map_at_top() const;
class surface &palette_map_at_top(bool palette_map_at_top);
bool contour_base() const;
class surface &contour_base(bool contour_base);
bool contour_surface() const;
class surface &contour_surface(bool contour_surface);
size_t contour_levels() const;
class surface &contour_levels(size_t contour_levels);
const std::vector<double> &contour_values() const;
class surface &
contour_values(const std::vector<double> &contour_values);
bool contour_text() const;
class surface &contour_text(bool contour_text);
float font_size() const;
class surface &font_size(const float &font_size);
const std::string font() const;
class surface &font(std::string_view font);
const std::string &font_weight() const;
class surface &font_weight(std::string_view font_weight);
const color_array &font_color() const;
class surface &font_color(const color_array &font_color);
class surface &font_color(std::string_view font_color);
bool depthorder() const;
class surface &depthorder(bool depthorder);
float face_alpha() const;
class surface &face_alpha(float face_alpha);
bool lighting() const;
class surface &lighting(bool lighting);
float primary() const;
class surface &primary(float amount);
float specular() const;
class surface &specular(float amount);
const class line_spec &contour_line_spec() const;
class line_spec &contour_line_spec();
class surface &
contour_line_spec(const class line_spec &contour_line_spec);
bool curtain() const;
class surface &curtain(bool curtain);
bool waterfall() const;
class surface &waterfall(bool waterfall);
bool fences() const;
class surface &fences(bool fences);
bool ribbons() const;
class surface &ribbons(bool ribbons);
double ribbon_width() const;
class surface &ribbon_width(double ribbon_width);
bool visible() const;
class surface &visible(bool visible);
public /* getters and setters bypassing the line_spec */:
float line_width() const;
class surface &line_width(float line_width);
const std::array<float, 4> &edge_color() const;
template <class T> surface &edge_color(T c) {
line_spec().color(c);
touch();
return *this;
}
inline class surface &edge_color(std::initializer_list<float> c) {
line_spec().color(c);
touch();
return *this;
}
double zmin() override;
double zmax() override;
protected:
void maybe_update_line_spec();
std::string grid_data_string();
std::string ribbon_data_string();
size_t create_line_index();
protected:
/// Data in the xlim
vector_2d X_data_{};
vector_2d Y_data_{};
vector_2d Z_data_{};
vector_2d C_data_{};
/// Interpret data as a flat array of parametrics values
/// If false, data needs to represent a grid
/// If true, data represents a free form
bool is_parametric_{false};
/// Preprocess zmin / zmax
double zmin_{NaN};
double zmax_{NaN};
/// Style
size_t norm_{2};
bool hidden3d_{false};
bool depthorder_{false};
float face_alpha_{.95f};
class line_spec line_spec_;
bool lighting_{false};
float primary_{-1.};
float specular_{-1.};
bool curtain_{false};
bool waterfall_{false};
bool fences_{false};
bool ribbons_{false};
double ribbon_width_{0.75};
// Line surface
bool surface_visible_{true};
bool surface_in_2d_{false};
// Solid surface
bool palette_map_at_bottom_{false};
bool palette_map_at_surface_{true};
bool palette_map_at_top_{false};
class line_spec contour_line_spec_;
bool contour_base_{false};
bool contour_surface_{false};
size_t contour_levels_{9};
std::vector<double> contour_values_{};
bool contour_text_{false};
std::optional<float> font_size_{std::nullopt};
std::optional<std::string> font_{std::nullopt};
std::string font_weight_{"normal"};
color_array font_color_{0, 0, 0, 0};
/// True if visible
bool visible_{true};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_SURFACE_H

View File

@ -0,0 +1,258 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_VECTORS_H
#define MATPLOTPLUSPLUS_VECTORS_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_object.h>
#include <matplot/core/line_spec.h>
#include <array>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS vectors : public axes_object {
public:
/// \brief Create empty vectors
explicit vectors(class axes_type *parent);
/// \brief Create 2D vectors with fixed origin and incremental u
/// Origin xy = (0,0), u = {1,...n}, v = {v_data}
vectors(class axes_type *parent, const std::vector<double> &v_data,
std::string_view line_spec = "");
/// \brief Create 2D vectors with fixed origin
/// Origin xy = (0,0), u = {u_data}, v = {v_data}
vectors(class axes_type *parent, const std::vector<double> &u_data,
const std::vector<double> &v_data,
std::string_view line_spec = "");
/// \brief Create 3D vectors with fixed origin
/// Origin xy = (0,0,0), u = {u_data}, v = {v_data}, w = {w_data}
vectors(class axes_type *parent, const std::vector<double> &u_data,
const std::vector<double> &v_data,
const std::vector<double> &w_data,
std::string_view line_spec = "");
/// \brief Create 2D vectors with custom origin
vectors(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &u_data,
const std::vector<double> &v_data,
std::string_view line_spec = "");
/// \brief Create 2D vectors with custom origin and colors
vectors(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &u_data,
const std::vector<double> &v_data,
const std::vector<double> &c_data,
std::string_view line_spec = "");
/// \brief Create 3D vectors with custom origin
vectors(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &z_data,
const std::vector<double> &u_data,
const std::vector<double> &v_data,
const std::vector<double> &w_data,
std::string_view line_spec = "");
/// \brief Create 3D vectors with custom origin and colors
vectors(class axes_type *parent, const std::vector<double> &x_data,
const std::vector<double> &y_data,
const std::vector<double> &z_data,
const std::vector<double> &u_data,
const std::vector<double> &v_data,
const std::vector<double> &w_data,
const std::vector<double> &c_data,
std::string_view line_spec = "");
/// If we receive an axes_handle, we can convert it to a raw
/// pointer because there is no ownership involved here
template <class... Args>
vectors(const axes_handle &parent, Args &&...args)
: vectors(parent.get(), std::forward<Args>(args)...) {}
virtual ~vectors() = default;
public /* mandatory virtual functions */:
std::string plot_string() override;
std::string legend_string(std::string_view title) override;
std::string data_string() override;
double xmax() override;
double xmin() override;
double ymax() override;
double ymin() override;
enum axes_object::axes_category axes_category() override;
public /* getters and setters */:
class vectors &line_style(std::string_view line_spec);
const matplot::line_spec &line_spec() const;
matplot::line_spec &line_spec();
class vectors &line_spec(const class line_spec &line_spec);
const std::vector<double> &y_data() const;
class vectors &y_data(const std::vector<double> &y_data);
const std::vector<double> &x_data() const;
class vectors &x_data(const std::vector<double> &x_data);
const std::vector<double> &z_data() const;
class vectors &z_data(const std::vector<double> &z_data);
const std::vector<size_t> &marker_indices() const;
class vectors &
marker_indices(const std::vector<size_t> &marker_indices);
bool use_y2() const;
class vectors &use_y2(bool use_y_2);
bool impulse() const;
class vectors &impulse(bool impulse);
bool fill() const;
class vectors &fill(bool fill);
bool use_y_2() const;
class vectors &use_y_2(bool use_y_2);
bool polar() const;
class vectors &polar(bool polar);
bool visible() const;
class vectors &visible(bool visible);
bool normalize() const;
class vectors &normalize(bool normalize);
double scale() const;
class vectors &scale(double scale);
public /* getters and setters bypassing the line_spec */:
float line_width() const;
class vectors &line_width(float line_width);
enum line_spec::marker_style marker_style() const;
template <class T> vectors &marker_style(T marker_style) {
line_spec_.marker_style(marker_style);
return *this;
}
enum line_spec::marker_style marker() const;
template <class T> vectors &marker(T marker) {
line_spec_.marker(marker);
return *this;
}
float marker_size() const;
class vectors &marker_size(float size);
class vectors &marker_size(const std::vector<float> &size_vector);
class vectors &marker_size(const std::vector<double> &size_vector);
bool marker_face() const;
class vectors &marker_face(bool size);
const std::array<float, 4> &color() const;
template <class T> vectors &color(T c) {
line_spec().color(c);
return *this;
}
inline class vectors &color(std::initializer_list<float> c) {
line_spec().color(c);
return *this;
}
const std::array<float, 4> &marker_color() const;
template <class T> vectors &marker_color(T c) {
line_spec().marker_color(c);
return *this;
}
inline class vectors &marker_color(std::initializer_list<float> c) {
line_spec().marker_color(c);
return *this;
}
inline class vectors &marker_colors(const std::vector<double> &cs) {
marker_colors_ = cs;
touch();
return *this;
}
const std::array<float, 4> &marker_face_color() const;
template <class T> vectors &marker_face_color(T c) {
line_spec().marker_face_color(c);
return *this;
}
inline class vectors &
marker_face_color(std::initializer_list<float> c) {
line_spec().marker_face_color(c);
return *this;
}
inline float marker_face_alpha() {
return line_spec().marker_face_alpha();
}
inline class vectors &marker_face_alpha(float a) {
line_spec().marker_face_alpha(a);
return *this;
}
protected:
void maybe_update_line_spec();
protected:
/// Line style
class line_spec line_spec_;
/// Vector origins
std::vector<double> y_data_{};
std::vector<double> x_data_{};
std::vector<double> z_data_{};
/// Vector components
std::vector<double> u_data_{};
std::vector<double> v_data_{};
std::vector<double> w_data_{};
/// Vector color mapping values
std::vector<double> c_data_{};
/// Positions at which we want markers to appear
std::vector<size_t> marker_indices_{};
std::vector<float> marker_sizes_{};
std::vector<double> marker_colors_{};
/// Scale of vectors
double scale_{1};
/// Draw line as impulse
bool impulse_{false};
/// Draw line as filled area
bool fill_{false};
/// Use the y2 xlim
bool use_y2_{false};
/// This line is meant for a polar plot
bool polar_{false};
/// True if visible
bool visible_{true};
/// True if vectors are normalized
bool normalize_{false};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_VECTORS_H

View File

@ -0,0 +1,222 @@
//
// Created by Alan Freitas on 26/08/20.
//
#ifndef MATPLOTPLUSPLUS_BACKEND_INTERFACE_H
#define MATPLOTPLUSPLUS_BACKEND_INTERFACE_H
#include <matplot/detail/config.h>
#include <memory>
#include <string>
#include <vector>
namespace matplot {
class figure_type;
namespace backend {
/// Inherit from this class to create a new backend
/// - Interactive backends show the plots on a window
/// - Non-interactive backends save the plots to a file
/// - The only backend for which we currently provide a
/// concrete implementation is gnuplot pipes. A gnuplot
/// pipe can be an interactive or non-interactive depending
/// on the terminal.
/// - Unfortunately, backends based on gnuplot terminals
/// need to be treated differently because they consume
/// commands rather vertices. It might be technically
/// possible to come up with a workaround to make gnuplot
/// plot each vertex but this is definitely not worth it.
/// - The interface for backends that expect lists of
/// vertices to draw are somewhat inspired in ImGui backends
/// and Matplotlib backends. You can see some examples at:
/// https://github.com/matplotlib/matplotlib/blob/master/src/_backend_agg.h
/// https://github.com/ocornut/imgui/tree/master/examples
/// - If implementing such an interface, the functions
/// for gnuplot pipes should just be ignored.
/// - These are placeholders with no concrete implementation.
/// We still need to define the functions that generate vertices
/// in the classes that inherit from axes_object, and these
/// functions in the interface are likely to change as we
/// need. A good place to start is probably the line object,
/// which is fundamental for most plots.
class MATPLOT_EXPORTS backend_interface {
/// Virtual functions you can override to create any backend
public:
virtual ~backend_interface() noexcept = default;
/// \brief True if backend is in interactive mode
/// One backends might support both interactive and
/// non-interactive mode.
/// For instance, the gnuplot backend can support
/// both modes by changing its terminal.
/// It is also possible to export the OpenGL state
/// as an image with the glReadPixels function.
/// You can combine glReadPixels with CImg
/// to export the image in a variety of formats.
/// To export vector graphics from OpenGL,
/// libraries such as http://www.geuz.org/gl2ps/
/// can be used.
virtual bool is_interactive();
/// \brief If non-interactive, get the file where we should output
/// our data
virtual const std::string &output();
/// \brief If non-interactive, get the format in which we should
/// output our data
virtual const std::string &output_format();
/// \brief If non-interactive, set the file where we should output
/// our data This function can use the file extension to
/// automatically set the output format
virtual bool output(const std::string &filename);
/// \brief If non-interactive, set the file and the file format for
/// outputting data
virtual bool output(const std::string &filename,
const std::string &file_format);
/// Get the current width
/// The user might have changed the image width manually.
/// Matplot++ needs to be aware of that.
virtual unsigned int width();
/// \brief Get height
virtual unsigned int height();
/// \brief Set width
/// For when the user programmatically sets the width
virtual void width(unsigned int new_width);
/// \brief Set height
virtual void height(unsigned int new_height);
/// \brief Get the current position_x (for interactive backends)
/// The user might have changed the image position_x manually.
/// Matplot++ needs to be aware of that.
virtual unsigned int position_x();
/// \brief Get position_y (for interactive backends)
virtual unsigned int position_y();
/// \brief Set position_x (for interactive backends)
/// For when the user programmatically sets the position_x
virtual void position_x(unsigned int new_position_x);
/// \brief Set position_y (for interactive backends)
virtual void position_y(unsigned int new_position_y);
/// \brief Set window title
virtual void window_title(const std::string& title);
/// \brief Get window title
virtual std::string window_title();
/// \brief Tell the backend we are about to draw a new image
/// The backend might reject starting this new image
/// For instance, the user already closed the window
/// and there's no point in feeding commands to the backend
virtual bool new_frame();
/// \brief Tell the backend this new image is over
/// The backend is free to plot whatever it's been
/// buffering
/// \return True if everything is ok
virtual bool render_data();
/// \brief Tell the backend to wait for user interaction
/// Until then, the backend should block execution if possible
/// Figures use this in the show function
virtual void show(matplot::figure_type *);
/// \brief True if the user requested to close the window
/// This function allows the backend to send a signal
/// indicating the user has asked to close the window
virtual bool should_close();
/// \brief True if the backend supports fonts
/// We can avoid some commands if it doesn't
virtual bool supports_fonts();
/// Public functions you need to override to create a new
/// backend based on vertices, such as OpenGL, Agg, etc...
/// These functions are likely to change as we come up
/// with concrete implementations based on vertices.
/// \see
/// https://github.com/matplotlib/matplotlib/blob/master/src/_backend_agg.h
/// \see https://github.com/ocornut/imgui/tree/master/examples
public:
/// \brief Draws background on the image
virtual void draw_background(const std::array<float, 4> &color);
/// \brief Draws rectangle on the image
virtual void draw_rectangle(const double x1, const double x2,
const double y1, const double y2,
const std::array<float, 4> &color);
/// \brief Draw a path on the image
/// Many backends will require the path to be floats
/// but Matplot++ words with doubles, so it's up to
/// the backend to implement this conversion however
/// it seems more efficient
virtual void draw_path(const std::vector<double> &x,
const std::vector<double> &y,
const std::array<float, 4> &color);
/// \brief Draw markers on the image
virtual void draw_markers(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {});
/// \brief Draw text on the image
virtual void draw_text(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {});
/// \brief Draw image matrix on the image
virtual void
draw_image(const std::vector<std::vector<double>> &x,
const std::vector<std::vector<double>> &y,
const std::vector<std::vector<double>> &z = {});
/// \brief Draw rectangle on the image
virtual void draw_triangle(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {});
/// We can certainly include more functions here, such as
/// draw_mesh, draw_rectangle, etc...
/// However, these functions should have a default implementation
/// that would recur to more primitive functions.
/// For instance, draw_rectangle should have a default
/// implementation to draw a rectangle based on two calls to
/// draw_triangle (for filled rectangles) or an implementation based
/// on draw_path (for unfilled rectangles). Otherwise, it would be
/// very expensive to start a new backend. These function should be
/// complementary functions that would be used to improve
/// performance on existing backends.
/// Public functions you need to override only if your backend
/// is based on gnuplot
/// If not, just leave it as it is and the default implementations
/// should do just fine.
public:
/// \brief If true, this backend does not work by consuming vertices
/// Most functions above will be ignored.
/// The figure object will send gnuplot commands to this backend
/// instead of vertices.
/// The default implementation returns false.
virtual bool consumes_gnuplot_commands();
/// \brief Send line and newline to gnu plot pipe and flush
/// We can buffer the lines until the end of data is sent
virtual void run_command(const std::string &text);
/// \brief Include a comment in the gnuplot code
/// This is useful when tracing the gnuplot commands
/// and when generating a gnuplot file.
virtual void include_comment(const std::string &text);
}; // class backend_interface
} // namespace backend
} // namespace matplot
#endif // MATPLOTPLUSPLUS_BACKEND_INTERFACE_H

View File

@ -0,0 +1,33 @@
//
// Created by Alan Freitas on 26/08/20.
//
#ifndef MATPLOTPLUSPLUS_BACKEND_REGISTRY_H
#define MATPLOTPLUSPLUS_BACKEND_REGISTRY_H
#include <matplot/detail/config.h>
#include <matplot/backend/backend_interface.h>
#include <matplot/backend/gnuplot.h>
#include <stdexcept>
namespace matplot {
template <class BACKEND_TYPE, class ... Args>
std::shared_ptr<backend::backend_interface> create_backend(Args&&... args) {
if constexpr (std::is_base_of_v<backend::backend_interface,
BACKEND_TYPE>) {
std::shared_ptr<BACKEND_TYPE> dp = std::make_shared<BACKEND_TYPE>(std::forward<Args>(args)...);
std::shared_ptr<backend::backend_interface> bp =
std::dynamic_pointer_cast<backend::backend_interface>(dp);
return bp;
} else {
throw std::invalid_argument(
std::string("The class ") + typeid(BACKEND_TYPE).name() +
" does not derive from backend::backend_interface");
}
}
MATPLOT_EXPORTS
std::shared_ptr<backend::backend_interface> create_default_backend();
} // namespace matplot
#endif // MATPLOTPLUSPLUS_BACKEND_REGISTRY_H

View File

@ -0,0 +1,145 @@
//
// Created by Alan Freitas on 26/08/20.
//
#ifndef MATPLOTPLUSPLUS_BACKEND_GNUPLOT_H
#define MATPLOTPLUSPLUS_BACKEND_GNUPLOT_H
#include <matplot/detail/config.h>
#include <matplot/backend/backend_interface.h>
#include <matplot/util/popen.h>
#include <array>
#include <chrono>
#include <tuple>
namespace matplot::backend {
class MATPLOT_EXPORTS gnuplot : public backend_interface {
public:
gnuplot();
virtual ~gnuplot();
bool is_interactive() override;
const std::string &output() override;
const std::string &output_format() override;
bool output(const std::string &filename) override;
bool output(const std::string &filename,
const std::string &file_format) override;
unsigned int width() override;
unsigned int height() override;
unsigned int position_x() override;
unsigned int position_y() override;
void position_x(unsigned int new_position_x) override;
void position_y(unsigned int new_position_y) override;
void width(unsigned int new_width) override;
void height(unsigned int new_height) override;
bool new_frame() override;
bool render_data() override;
bool supports_fonts() override;
public:
bool consumes_gnuplot_commands() override;
void run_command(const std::string &command) override;
void include_comment(const std::string &comment) override;
public /* gnuplot pipe functions */:
/// We "render the data" by flushing the commands
bool flush_commands();
/// Identify the default terminal type in the system
static std::string default_terminal_type();
static bool terminal_is_available(std::string_view);
static std::tuple<int, int, int> gnuplot_version();
static bool gnuplot_includes_legends();
static bool gnuplot_has_wall_option();
static bool gnuplot_supports_keyentry();
static bool terminal_has_title_option(const std::string &t);
static bool terminal_has_size_option(const std::string &t);
static bool terminal_has_position_option(const std::string &t);
static bool terminal_has_enhanced_option(const std::string &t);
static bool terminal_has_color_option(const std::string &t);
static bool terminal_has_font_option(const std::string &t);
public: /* gnuplot pipe constexprs */
// True if the windows persist after closing the program
// False by default because this is VERY annoying in
// some repetitive tasks involving lots of plots
// You can change the default here or run the command
// set terminal "name" persist
static constexpr bool windows_should_persist_by_default = false;
// True if we should wait at least 5 seconds after the last
// flush to close gnuplot
static constexpr bool dont_let_it_close_too_fast = false;
// True if we allow to use the mouse interactively in the window
// Most of the time, this is just annoying when we scroll without
// meaning to It is very very hard to use the mouse properly
// http://www.gnuplot.info/files/gpReadMouseTest.c
static constexpr bool allow_using_mouse = true;
#if defined(MATPLOT_TRACE_GNUPLOT_COMMANDS) && \
!defined(MATPLOT_BUILD_FOR_DOCUMENTATION_IMAGES)
static constexpr bool trace_commands = true;
#else
static constexpr bool trace_commands = false;
#endif
static constexpr size_t pipe_capacity_worst_case = BUFSIZ;
/// File formats for figures and properties of terminals
static constexpr std::array<
std::pair<std::string_view, std::string_view>, 33>
extension_terminal() {
return std::array<std::pair<std::string_view, std::string_view>,
33>{
std::pair{".html", "canvas"}, std::pair{".cgm", "cgm"},
std::pair{".txt", "dumb"}, std::pair{".md", "dumb"},
std::pair{".dxf", "dxf"}, std::pair{".emf", "emf"},
// std::pair{".emtex", "emtex"},
std::pair{".eps", "postscript"}, std::pair{".eps", "epscairo"},
std::pair{".eps", "epslatex"}, std::pair{".gif", "gif"},
std::pair{".hpgl", "hpgl"}, std::pair{".jpeg", "jpeg"},
std::pair{".jpg", "jpeg"}, std::pair{".tex", "epslatex"},
std::pair{".mf", "mf"}, std::pair{".mp", "mp"},
std::pair{".pcl5", "pcl5"}, std::pair{".pdf", "pdf"},
std::pair{".pdf", "pdfcairo"}, std::pair{".png", "pngcairo"},
std::pair{".png", "png"}, std::pair{".tex", "pslatex"},
std::pair{".tex", "context"}, std::pair{".tex", "texdraw"},
std::pair{".tex", "tikz"},
// std::pair{".tex", "eepic"},
// std::pair{".tex", "tpic"},
std::pair{".pstex", "pstex"},
std::pair{".pstricks", "pstricks"},
// std::pair{".qms", "qms"},
std::pair{".sixel", "sixelgd"}, std::pair{".svg", "svg"},
std::pair{".tek40xx", "tek40xx"},
std::pair{".tek410x", "tek410x"},
// std::pair{".tgif", "tgif"},
std::pair{".tkcanvas", "tkcanvas"},
// std::pair{".tpic", "tpic"},
std::pair{".vttek", "vttek"}};
}
private:
// Process pipe to gnuplot
opipe pipe_;
// How many bytes we put in the pipe
size_t bytes_in_pipe_{0};
// Current gnuplot terminal we should
std::string terminal_{"qt"};
// Position and size
std::array<unsigned, 4> position_{680, 558, 560, 420};
// Time we last flush, to avoid flushing results too fast
std::chrono::high_resolution_clock::time_point last_flush_;
// File output, if non-interactive
std::string output_{};
// Whether we should include comments in the commands
bool include_comments_ = trace_commands;
};
} // namespace matplot::backend
#endif // MATPLOTPLUSPLUS_BACKEND_GNUPLOT_H

View File

@ -0,0 +1,40 @@
//
// Created by Alan Freitas on 26/08/20.
//
#ifndef MATPLOTPLUSPLUS_OPENGL_H
#define MATPLOTPLUSPLUS_OPENGL_H
#include <matplot/detail/config.h>
#include <matplot/backend/opengl_embed.h>
#include <mutex>
#include <thread>
namespace matplot::backend {
class MATPLOT_EXPORTS opengl : public opengl_embed {
public:
opengl();
~opengl();
public:
bool new_frame() override;
bool render_data() override;
void show(matplot::figure_type *) override;
bool should_close() override;
void window_title(const std::string& title) override;
std::string window_title() override;
public:
static constexpr unsigned int default_screen_width = 560;
static constexpr unsigned int default_screen_height = 420;
static void initialize_glfw();
static double get_time();
private:
GLFWwindow *window_;
std::string window_title_;
std::mutex this_window_in_context_;
static bool glfw_is_initialized;
};
} // namespace matplot::backend
#endif // MATPLOTPLUSPLUS_OPENGL_H

View File

@ -0,0 +1,112 @@
//
// Created by Alan Freitas on 26/08/20.
//
#ifndef MATPLOTPLUSPLUS_OPENGL_EMBED_H
#define MATPLOTPLUSPLUS_OPENGL_EMBED_H
#include <matplot/detail/config.h>
#ifdef __APPLE__
/* Defined before OpenGL and GLUT includes to avoid deprecation messages on
* Apple */
/* What the hell is Apple thinking? */
#define GL_SILENCE_DEPRECATION
#endif
/// Because OpenGL is only really a standard/specification it is up to
/// the driver manufacturer to implement the specification to a driver
/// that the specific graphics card supports. Since there are many
/// different versions of OpenGL drivers, the location of most of its
/// functions is not known at compile-time and needs to be queried at
/// run-time. GLAD is an open source library that manages all that
/// cumbersome work we talked about.
/// \see https://learnopengl.com/Getting-started/Creating-a-window
#include <glad/glad.h>
/// GLFW gives us the bare necessities required for rendering goodies
/// to the screen. It allows us to create an OpenGL context, define
/// window parameters, and handle user input
/// \see https://learnopengl.com/Getting-started/Creating-a-window
#include <GLFW/glfw3.h>
#include <matplot/backend/backend_interface.h>
namespace matplot::backend {
class MATPLOT_EXPORTS opengl_embed : public backend_interface {
public:
opengl_embed();
explicit opengl_embed(bool create_shaders);
~opengl_embed();
public:
bool is_interactive() override;
const std::string &output() override;
const std::string &output_format() override;
bool output(const std::string &filename) override;
bool output(const std::string &filename,
const std::string &file_format) override;
unsigned int width() override;
unsigned int height() override;
void width(unsigned int new_width) override;
void height(unsigned int new_height) override;
unsigned int position_x() override;
unsigned int position_y() override;
void position_x(unsigned int new_position_x) override;
void position_y(unsigned int new_position_y) override;
bool new_frame() override;
// This is only a demonstration that is blocking the main thread.
// Because glfw does not work well with multiple threads,
// the challenge is to run the rendering loop in another thread
// while we see this function only to update what should be rendered.
bool render_data() override;
void show(matplot::figure_type *) override;
bool supports_fonts() override;
public:
void draw_background(const std::array<float, 4> &color) override;
void draw_rectangle(const double x1, const double x2,
const double y1, const double y2,
const std::array<float, 4> &color) override;
void draw_path(const std::vector<double> &x,
const std::vector<double> &y,
const std::array<float, 4> &color) override;
void draw_markers(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {}) override;
void draw_text(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {}) override;
void
draw_image(const std::vector<std::vector<double>> &x,
const std::vector<std::vector<double>> &y,
const std::vector<std::vector<double>> &z = {}) override;
void draw_triangle(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<double> &z = {}) override;
public:
static constexpr unsigned int default_screen_width = 560;
static constexpr unsigned int default_screen_height = 420;
/// \brief glfw: whenever the window size changed (by OS or user resize)
/// this callback function executes
static void framebuffer_size_callback(GLFWwindow *window, int width,
int height);
/// \brief Process all input
/// Query GLFW whether relevant keys are pressed/released
/// this frame and react accordingly
static void process_input(GLFWwindow *window);
void create_shaders();
private:
unsigned int draw_2d_single_color_shader_program_;
int n_vertex_attributes_available_;
unsigned int height_{default_screen_height};
unsigned int width_{default_screen_width};
};
} // namespace matplot::backend
#endif // MATPLOTPLUSPLUS_OPENGL_EMBED_H

View File

@ -0,0 +1,95 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_CHARTOBJECT_H
#define MATPLOTPLUSPLUS_CHARTOBJECT_H
#include <memory>
#include <vector>
#include <string>
#include <matplot/detail/config.h>
namespace matplot {
class axes_type;
using axes_handle = std::shared_ptr<class axes_type>;
/// Abstract class for the objects we put in the xlim
class MATPLOT_EXPORTS axes_object {
public:
enum class axes_category {
two_dimensional,
three_dimensional,
three_dimensional_map,
polar
};
public:
explicit axes_object(class axes_type *parent);
explicit axes_object(axes_handle parent);
virtual ~axes_object() = default;
public:
virtual double xmax();
virtual double xmin();
virtual double ymax();
virtual double ymin();
virtual double zmax();
virtual double zmin();
virtual axes_category axes_category();
virtual bool requires_colormap();
virtual std::string tag();
virtual void tag(std::string_view);
bool is_3d();
bool is_3d_map();
bool is_2d();
bool is_polar();
public /* for the backend */:
virtual void run_draw_commands();
public /* for gnuplot backend only */:
virtual std::string set_variables_string();
// Plot command for this object
virtual std::string plot_string() = 0;
// Create a legend string for this object
// https://stackoverflow.com/questions/60617211/how-to-put-a-rectangle-in-the-key-with-same-hue-as-a-shaded-area-in-gnuplot/60624922#60624922
virtual std::string legend_string(std::string_view legend);
// Take a number of legends from the range [legends_begin, legends_end]
// and advance the legends_begin iterator.
// Objects might want to take care of more than one legend.
// They can overload this method to do that.
// If not, they can just inherit the simple legend_string method.
virtual std::string
legend_string(std::vector<std::string>::iterator &legends_begin,
std::vector<std::string>::iterator &legends_end);
virtual std::string data_string();
virtual std::string unset_variables_string();
public:
const class axes_type *parent() const;
class axes_type *&parent();
void parent(class axes_type *&parent);
void touch();
// Objects might have their own display name
// In this case, we use the display name for legends
// instead of the strings in the legends object
const std::string &display_name() const;
void display_name(std::string_view display_name);
protected:
std::string tag_{"axes_object"};
std::string display_name_{""};
class axes_type *parent_;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_CHARTOBJECT_H

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,181 @@
//
// Created by Alan Freitas on 2020-07-03.
//
#ifndef MATPLOTPLUSPLUS_AXIS_TYPE_H
#define MATPLOTPLUSPLUS_AXIS_TYPE_H
#include <matplot/detail/config.h>
#include <matplot/util/handle_types.h>
#include <matplot/util/keywords.h>
#include <array>
#include <string>
#include <vector>
namespace matplot {
class axes_type;
/// A two dimensional axis
class MATPLOT_EXPORTS axis_type {
public:
enum class axis_scale { linear, log };
public:
friend axes_type;
axis_type();
explicit axis_type(class axes_type *parent);
explicit axis_type(class axes_type *parent, bool visible);
axis_type(class axes_type *parent, double min, double max);
axis_type(class axes_type *parent, double min, double max,
bool visible);
public:
void touch();
public:
std::array<double, 2> limits() const;
class axis_type &limits(const std::array<double, 2> &limits);
bool limits_mode_auto() const;
bool limits_mode_manual() const;
class axis_type &limits_mode_auto(bool limits_mode_auto);
class axis_type &limits_mode_manual(bool limits_mode_manual);
std::string range_string() const;
bool reverse() const;
class axis_type &reverse(bool reverse);
const color_array &color() const;
class axis_type &color(const color_array &color);
class axis_type &color(std::string_view color);
class axis_type &color(const enum color &color);
const std::string &label() const;
class axis_type &label(std::string_view label);
const std::string &tick_label_format() const;
class axis_type &tick_label_format(std::string_view tick_label_format);
bool tick_values_automatic() const;
class axis_type &tick_values_automatic(bool tick_values_automatic);
bool tick_values_manual() const;
class axis_type &tick_values_manual(bool tick_values_manual);
/// Get tick values
/// This might be tick values provided by the user
/// or tick values calculated automatically for the range
const std::vector<double> &tick_values() const;
class axis_type &tick_values(const std::vector<double> &tick_values);
/// Get tick values
/// This might be tick labels provided by the user
/// or tick labels according to a format
const std::vector<std::string> &ticklabels() const;
class axis_type &ticklabels(const std::vector<std::string> &ticklabels);
bool ticklabels_mode() const;
class axis_type &ticklabels_mode(bool ticklabels_mode);
float tickangle() const;
class axis_type &tickangle(float tickangle);
axis_scale scale() const;
class axis_type &scale(axis_scale scale);
float tick_length() const;
class axis_type &tick_length(float tick_length);
bool zero_axis() const;
class axis_type &zero_axis(bool zero_axis);
bool geographic() const;
class axis_type &geographic(bool geographic);
bool on_axis() const;
class axis_type &on_axis(bool on_axis);
const std::string &label_weight() const;
class axis_type &label_weight(std::string_view label_weight);
float label_font_size() const;
class axis_type &label_font_size(float label_font_size);
const color_array &label_color() const;
class axis_type &label_color(const color_array &label_color);
template <class T> axis_type &label_color(T c) {
label_color(to_array(c));
return *this;
}
bool is_timestamp() const;
class axis_type &is_timestamp(bool is_timestamp);
bool visible() const;
class axis_type &visible(bool visible);
public:
std::string label_string() const;
std::string tick_values_string(bool minor_ticks = false) const;
std::string tick_rotate_string() const;
private:
// range
std::array<double, 2> limits_{0, 2};
bool limits_mode_auto_{true};
bool reverse_{false};
axis_scale scale_{axis_scale::linear};
float exponent{0};
bool geographic_{false};
// tics
std::vector<double> tick_values_{0, 0.2000, 0.4000, 0.6000,
0.8000, 1, 1.2000, 1.4000,
1.6000, 1.8000, 2};
std::string tick_label_format_{"%g"};
bool tick_values_automatic_{true};
float tickangle_{0};
std::vector<std::string> ticklabels_;
bool ticklabels_mode_{true};
std::array<float, 4> color_{0, 0.15f, 0.15f, 0.15f};
float tick_length_{0.75};
// minor tics
bool minor_tick_{false};
std::vector<double> minor_tick_values_{
0.0500, 0.1000, 0.1500, 0.2500, 0.3000, 0.3500, 0.4500, 0.5000,
0.5500, 0.6500, 0.7000, 0.7500, 0.8500, 0.9000, 0.9500, 1.0500,
1.1000, 1.1500, 1.2500, 1.3000, 1.3500, 1.4500, 1.5000, 1.5500,
1.6500, 1.7000, 1.7500, 1.8500, 1.9000, 1.9500};
// font
std::string font_{"Helvetica"};
float font_size_{10};
std::string font_weight_{"normal"};
// label
std::string label_{""};
std::string label_weight_{"normal"};
float label_font_size_{11};
color_array label_color_{0, 0, 0, 0};
bool is_timestamp_{false};
// line
float line_width_{0.5};
// draw zero axis
bool zero_axis_{false};
// Draw the tics on the axis
bool on_axis_{false};
bool visible_{true};
// parent xlim
class axes_type *parent_;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_AXIS_TYPE_H

View File

@ -0,0 +1,52 @@
//
// Created by Alan Freitas on 04/08/20.
//
#ifndef MATPLOTPLUSPLUS_FIGURE_REGISTRY_H
#define MATPLOTPLUSPLUS_FIGURE_REGISTRY_H
#include <matplot/detail/config.h>
#include <matplot/core/figure_type.h>
namespace matplot {
using figure_handle = std::shared_ptr<figure_type>;
/// \brief Create a new figure
MATPLOT_EXPORTS
figure_handle figure_no_backend(bool quiet_mode);
/// \brief Create a new figure with a given backend
template <class BACKEND = backend::gnuplot>
figure_handle figure(bool quiet_mode) {
std::shared_ptr<backend::backend_interface> b =
create_backend<BACKEND>();
figure_handle f = figure_no_backend(quiet_mode);
f->backend(b);
return f;
}
/// \brief Create a new figure (reactive mode)
template <class BACKEND = backend::gnuplot> figure_handle figure() {
/// Take default mode from backend?
return figure<BACKEND>(false);
}
/// \brief Set the current figure
MATPLOT_EXPORTS
figure_handle figure(figure_handle h);
/// \brief Set the current figure
MATPLOT_EXPORTS
figure_handle figure(class figure_type *h);
/// \brief Get the current figure
MATPLOT_EXPORTS
figure_handle gcf();
/// \brief Get current figure in quiet mode
MATPLOT_EXPORTS
figure_handle gcf(bool quiet);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_FIGURE_REGISTRY_H

View File

@ -0,0 +1,326 @@
#ifndef MATPLOTPLUSPLUS_FIGURE_TYPE_H
#define MATPLOTPLUSPLUS_FIGURE_TYPE_H
#include <array>
#include <fstream>
#include <iostream>
#include <matplot/backend/backend_registry.h>
#include <matplot/backend/gnuplot.h>
#include <matplot/util/colors.h>
#include <matplot/util/handle_types.h>
#include <matplot/util/popen.h>
#include <matplot/detail/config.h>
#include <stdio.h>
#include <string>
#include <vector>
namespace matplot {
class axes_type;
/// \class Figure
/// From Figures, we can create plot handles and
/// multiplot handles that contain other plot handles.
/// - Figure objects have axis objects
/// - Axis objects have plot object
///
/// When we plot the any of these subobjects, they will
/// send the appropriate commands to the parent Figure/pipe
/// to plot it.
///
/// If we create more Figures, we create more plot windows,
/// but we don't really recommend doing that. It's better
/// to only use the default pipe for everything and use
/// multiplots if more plots are needed.
class MATPLOT_EXPORTS figure_type {
public:
friend class axes_type;
// Remove the copy operators because users are not
// supposed to use this object directly.
// Users will use a figure_handle which can be copied
// and still reference to the same object.
figure_type(figure_type const &) = delete;
void operator=(figure_type const &) = delete;
/// \brief Create a Figure window
figure_type();
/// \brief Create a Figure window
explicit figure_type(bool quiet_mode);
/// \brief Create a Figure window
explicit figure_type(size_t index);
/// \brief Create a Figure window
explicit figure_type(size_t index, bool quiet_mode);
/// \brief The destructor closes the pipe
virtual ~figure_type();
public /* manage axes */:
/// \brief Create new axes in a figure
axes_handle add_axes(bool replace_if_overlap = false);
/// \brief Create new axes in position
/// Don't replace any axes that might overlap
/// Replace any axes exactly in the same position
/// \param position: x, y, width, height (all from 0 to 1)
/// \return Handle to new axes
axes_handle add_axes(std::array<float, 4> position);
/// \brief Add existing axes to the figure
/// If we find axes in the exact same position, we can replace
/// the axes with the new axes or we can get a handle
/// to the existing axes. If we don't find axes in the exact
/// same position, we remove any other axes overlapping the new
/// axes and return a handle to the new axes.
/// \param ax Handle to the new axes
/// \param replace_if_overlap Replace any axes that overlap at all
/// \param replace_if_same_position Replace any axes that are exactly in
/// the same position \return Handle to new axes
axes_handle add_axes(std::shared_ptr<class axes_type> ax,
bool replace_if_overlap,
bool replace_if_same_position);
/// \brief Add a subplot
/// The subplot is an axes with its position determined by the number of
/// rows, columns, and id
axes_handle add_subplot(size_t rows, size_t cols, size_t plot_id,
bool replace_if_same_position = false);
/// \brief Make axes a subplot of this figure
axes_handle add_subplot(size_t rows, size_t cols, size_t plot_id,
axes_handle axes);
/// \brief Create new axes in a subplot covering all positions in P
axes_handle add_subplot(size_t rows, size_t cols,
std::initializer_list<size_t> P,
bool replace_if_same_position = false);
/// \brief Create new subplot in a specific position
axes_handle add_subplot(std::array<float, 4> position,
bool replace_if_same_position = false);
/// \brief Get next tile in a tiled layout
/// In tiled layouts, we create new axes for each new tile.
/// The tile positions are determined according to the number
/// of rows/columns provided by `tiledlayout()`.
/// When creating a new tile, if there are more tiles than rows *
/// columns, we increase the number of rows or columns to make the new
/// tile fit. The position of old tiled is adjusted to the new number of
/// rows and columns.
void tiledlayout(size_t rows = 1, size_t cols = 1);
/// \brief Add next tile to plot
axes_handle nexttile();
/// \brief Add next tile to plot at position index
axes_handle nexttile(size_t index);
/// Get reference to current axes / create new axes if it does not exist
std::shared_ptr<class axes_type> current_axes();
/// Get reference to current axes
std::shared_ptr<class axes_type> current_axes() const;
/// Set current axes in the figure
void current_axes(const std::shared_ptr<class axes_type> &current_axes);
/// \brief Get reference to vector with all child axes
const std::vector<std::shared_ptr<class axes_type>> &children() const;
void
children(const std::vector<std::shared_ptr<class axes_type>> &children);
protected:
static std::array<float, 4>
calculate_subplot_position(size_t rows, size_t cols, size_t plot_id);
public /* manage figure reactive mode */:
/// \brief Draw the current figure (for figures in quiet/non-reactive
/// mode) Flush the buffer to the pipe, updating or creating the plot
/// window
void draw();
/// \brief Draw the current figure and pause the console
/// This is useful to keep the figure open, usually by the end
/// of a program. Never use this function inside a library
/// meant to be used non-interactively.
void show();
/// \brief Plot the figure if not in quiet mode
/// In some applications, we want the default behaviour
/// where we update the plot whenever we change a figure
/// property. This is usually what we want when tracking
/// the behaviour of an algorithm of something like that.
/// In some other applications, however, we just want
/// to plot when we explicitly call the plot function.
/// This is the case when producing plots for papers, etc.
/// This is also the case in applications where we need
/// performance.
void touch();
/// True if user required the backend to close
bool should_close();
/// True if in quiet mode (not reactive)
bool quiet_mode() const;
/// Set quite mode (non-reactive)
void quiet_mode(bool quiet_mode);
/// True if in quiet mode (not reactive)
bool reactive_mode() const;
/// Set quite mode (non-reactive)
void reactive_mode(bool reactive_mode);
/// Turn on reactive mode (off quiet mode)
void ion();
/// Turn off reactive mode (on quiet mode)
void ioff();
public /* save figure */:
/// Save figure
bool save(const std::string &filename, const std::string &format);
bool save(const std::string &filename);
public /* plot functions for figure */:
/// Create matrix of axes with scatter plots - X / Y
std::tuple<std::vector<std::vector<scatter_handle>>,
std::vector<histogram_handle>,
std::vector<std::vector<axes_handle>>>
plotmatrix(const std::vector<std::vector<double>> &X,
const std::vector<std::vector<double>> &Y,
std::string_view line_spec = "of",
bool histogram_on_diagonals = false);
/// Create matrix of axes with scatter plots - X / X
std::tuple<std::vector<std::vector<scatter_handle>>,
std::vector<histogram_handle>,
std::vector<std::vector<axes_handle>>>
plotmatrix(const std::vector<std::vector<double>> &X,
std::string_view line_spec = "of",
bool histogram_on_diagonals = false) {
return this->plotmatrix(X, X, line_spec, histogram_on_diagonals);
}
public /* figure properties */:
const std::shared_ptr<backend::backend_interface> &backend() const;
void
backend(const std::shared_ptr<backend::backend_interface> &new_backend);
void name(std::string_view name);
std::string name() const;
size_t number() const;
void color(const color_array &c);
void color(const std::array<float, 3> &c);
void color(std::string_view c);
void color(const enum color &c);
color_array color() const;
bool custom_color() const;
void custom_color(bool custom_color);
void position(const std::array<unsigned, 4> &c);
void position(unsigned x, unsigned y, unsigned w, unsigned h);
void position(unsigned x, unsigned y);
void size(unsigned w, unsigned h);
std::array<unsigned, 4> position() const;
unsigned x_position() const;
void x_position(unsigned x);
unsigned y_position() const;
void y_position(unsigned y);
unsigned width() const;
void width(unsigned w);
unsigned height() const;
void height(unsigned h);
void number_title(bool number_title);
bool number_title() const;
const std::string &font() const;
void font(std::string_view font);
float font_size() const;
void font_size(float font_size);
const std::string &title() const;
void title(std::string_view title);
const color_array &title_color() const;
void title_color(const color_array &title_color);
float title_font_size_multiplier() const;
void title_font_size_multiplier(float title_font_size_multiplier);
/// Return if Figure is valid
explicit operator bool() const;
protected:
// Draw, depending on the backend type
void send_draw_commands();
void send_gnuplot_draw_commands();
protected /* run commands on a gnuplot pipe if that's our backend */:
/// \brief Send line and newline to gnu plot pipe and flush
/// We can buffer the lines until the end of data is sent
void run_command(const std::string &text);
/// \brief Include a comment in the gnuplot code
/// This is useful when tracing the gnuplot commands
/// and when generating a gnuplot file.
void include_comment(const std::string &text);
/// \brief Send commands to gnuplots
void flush_commands();
/// Plots an empty plot command
void plot_empty_plot();
/// \brief Run commands to set the appropriate window properties
/// This applies of member objects to the window (font, size, ...)
void run_figure_properties_command();
void run_terminal_init_command();
void run_window_color_command();
void run_unset_window_color_command();
void run_multiplot_command();
private:
[[nodiscard]] std::string generate_window_title() const;
private:
// The default backend for this figure
std::shared_ptr<backend::backend_interface> backend_{nullptr};
// Figure properties
bool quiet_mode_ = true;
bool is_plotting_{false};
std::string name_;
std::string title_;
color_array title_color_{0, 0, 0, 0};
float title_font_size_multiplier_{1.4f};
size_t number_{1};
bool number_title_{true};
// ARGB
color_array color_{0., 0.94f, 0.94f, 0.94f};
bool custom_color_{false}; // was this color defined by the user
std::string font_{"Helvetica"};
float font_size_{10.};
// Axes
std::vector<std::shared_ptr<class axes_type>> children_;
std::shared_ptr<class axes_type> current_axes_;
// Axes tiles
size_t current_tile_index_ = 0;
size_t tiledlayout_rows_ = 1;
size_t tiledlayout_cols_ = 1;
bool tiledlayout_flow_ = true;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_FIGURE_TYPE_H

View File

@ -0,0 +1,166 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_LEGEND_H
#define MATPLOTPLUSPLUS_LEGEND_H
#include <array>
#include <matplot/core/line_spec.h>
#include <matplot/util/handle_types.h>
#include <string>
#include <vector>
namespace matplot {
class axes_type;
class MATPLOT_EXPORTS legend {
public:
enum class horizontal_alignment { left, center, right };
enum class vertical_alignment { top, center, bottom };
enum class general_alignment {
topleft,
top,
topright,
left,
center,
right,
bottomleft,
bottom,
bottomright,
};
public:
legend() = default;
legend(class axes_type *parent);
legend(class axes_type *parent,
std::initializer_list<std::string> names);
legend(class axes_type *parent, const std::vector<std::string> &names);
public /* useful functions */:
void touch();
const std::string &operator[](size_t index) const;
std::string &operator[](size_t index);
bool empty() const;
size_t size() const;
std::vector<std::string>::const_iterator begin() const;
std::vector<std::string>::iterator begin();
std::vector<std::string>::const_iterator end() const;
std::vector<std::string>::iterator end();
public /* getter and setters */:
std::vector<std::string> &strings();
const std::vector<std::string> &strings() const;
void strings(const std::vector<std::string> &strings);
void inside(bool inside);
bool inside() const;
bool label_after_sample() const;
void label_after_sample(bool label_after_sample);
bool box() const;
void box(bool box);
const line_spec &box_line() const;
line_spec &box_line();
void box_line(const line_spec &box_line);
bool vertical() const;
void vertical(bool vertical);
bool horizontal() const;
void horizontal(bool horizontal);
// Legend location given a reference position
// If the position is automatic, the reference is the xlim
// If the position is a manual point, the reference is this point
general_alignment location() const;
void location(general_alignment alignment);
horizontal_alignment horizontal_location() const;
void horizontal_location(horizontal_alignment horizontal_location);
vertical_alignment vertical_location() const;
void vertical_location(vertical_alignment vertical_location);
bool manual_position() const;
void manual_position(bool manual_position);
const std::array<float, 2> &position() const;
void position(const std::array<float, 2> &position);
bool invert() const;
void invert(bool invert);
size_t num_columns() const;
void num_columns(size_t num_columns);
size_t num_rows() const;
void num_rows(size_t num_rows);
bool visible() const;
void visible(bool visible);
const std::string &title() const;
void title(std::string_view title);
const std::string &font_name() const;
void font_name(std::string_view font_name);
float font_size() const;
void font_size(float font_size);
const std::string &font_angle() const;
void font_angle(std::string_view font_angle);
const std::string &font_weight() const;
void font_weight(std::string_view font_weight);
const color_array &text_color() const;
void text_color(const color_array &text_color);
template <class T> void text_color(T c) { text_color(to_array(c)); }
bool opaque() const;
void opaque(bool opaque);
private:
// The keys
std::vector<std::string> strings_{};
std::string title_{""};
// Positioning
bool inside_{true};
bool manual_position_{false};
std::array<float, 2> position_{0.0, 0.0};
horizontal_alignment horizontal_location_{horizontal_alignment::right};
vertical_alignment vertical_location_{vertical_alignment::top};
// Font
std::string font_name_{"Helvetica"};
float font_size_{11};
std::string font_angle_{"normal"};
std::string font_weight_{"bold"};
color_array text_color_{0., 0, 0, 0};
// Style
bool box_{true};
line_spec box_line_{"k-"};
// color_array color_{0., 1, 1, 1};
bool vertical_{true};
bool label_after_sample_{true};
bool invert_{false};
bool visible_{true};
bool opaque_{true};
size_t num_columns_{0};
size_t num_rows_{0};
// Parent xlim
class axes_type *parent_{nullptr};
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_LEGEND_H

View File

@ -0,0 +1,186 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_LINE_SPEC_H
#define MATPLOTPLUSPLUS_LINE_SPEC_H
#include <array>
#include <functional>
#include <matplot/util/colors.h>
#include <matplot/util/concepts.h>
namespace matplot {
class MATPLOT_EXPORTS line_spec {
public:
enum class line_style {
none, // no line
solid_line, // "-"
dashed_line, // "--"
dotted_line, // ":"
dash_dot_line, // "-."
};
enum class marker_style {
none, // "" -> gnuplot linetype -1
plus_sign, // "+" -> gnuplot linetype 1
circle, // "o" -> gnuplot linetype 6
asterisk, // "*" -> gnuplot linetype 3
point, // "." -> gnuplot linetype 7
cross, // "x" -> gnuplot linetype 2
square, // "s" / "square" -> gnuplot linetype 4 / 5
diamond, // "d" / "diamond" -> gnuplot linetype 12 / 13
upward_pointing_triangle, // "^" -> gnuplot linetype 8 / 9
downward_pointing_triangle, // "v" -> gnuplot linetype 10 / 11
right_pointing_triangle, // ">" -> gnuplot linetype (doest not
// exist)
left_pointing_triangle, // "<" -> gnuplot linetype (does not exist)
pentagram, // "p" / "pentagram" -> gnuplot linetype 14 / 15
hexagram, // "h" / "hexagram" -> gnuplot linetype (does not exist)
custom, // https://stackoverflow.com/questions/16189187/gnuplot-using-custom-point-shapes-with-legend-entry
};
enum class style_to_plot {
// plot line with markers together
plot_line_and_marker,
// plot only line
plot_line_only,
// plot only markers
plot_marker_only,
// plot only marker face
plot_marker_face_only
};
public:
line_spec();
explicit line_spec(std::string_view expr);
template <class T>
line_spec(Pointer<T> parent, std::string_view expr)
: line_spec(expr) {
touch_function_ = [parent]() { parent->touch(); };
}
public:
/// \brief Create string to apply this style in gnuplot
/// This includes the style for the line and the marker
/// It's only possible to set the color for one of them
std::string
plot_string(style_to_plot sty = style_to_plot::plot_line_and_marker,
bool include_style = true);
/// Get line_spec properties from a string
void parse_string(std::string_view expr);
/// \brief True if we can plot line and marker with only one plot
/// command We can plot them together "with linespoints" if:
/// - They both are different from none
/// - They have the same color
bool can_plot_line_and_marker_together();
/// \brief True if style includes a line
bool has_line();
/// \brief True if style includes a non custom marker
bool has_non_custom_marker();
/// \brief True if style includes a marker face
bool has_marker_face();
/// \brief True if line, marker, and marker face are the same color
[[nodiscard]] bool line_and_marker_are_the_same_color() const;
/// \brief True if marker and marker face are the same color
[[nodiscard]] bool marker_and_face_are_the_same_color() const;
/// Touch the parent element
void touch();
[[nodiscard]] const std::array<float, 4> &color() const;
[[nodiscard]] float alpha() const;
void color(const std::array<float, 3> &color);
void color(const std::array<float, 4> &color);
void color(std::initializer_list<float> color);
void color(std::string_view color);
void color(enum color marker_color);
void alpha(float alpha);
[[nodiscard]] bool user_color() const;
void user_color(bool user_color);
[[nodiscard]] line_style line_style() const;
void line_style(enum line_style line_style);
[[nodiscard]] float line_width() const;
void line_width(float line_width);
[[nodiscard]] enum marker_style marker_style() const;
void marker_style(enum marker_style marker_style);
void marker_style(std::string_view marker_style);
[[nodiscard]] enum marker_style marker() const;
template <class T> void marker(T marker) { marker_style(marker); }
[[nodiscard]] const std::string &custom_marker() const;
void custom_marker(std::string_view custom_marker);
[[nodiscard]] float marker_size() const;
void marker_size(float marker_size);
const std::array<float, 4> &marker_color() const;
float marker_alpha() const;
void marker_color(const std::array<float, 3> &color);
void marker_color(const std::array<float, 4> &color);
void marker_color(std::initializer_list<float> color);
void marker_color(std::string_view color);
void marker_color(enum color marker_color);
void marker_alpha(float alpha);
bool marker_user_color() const;
void marker_user_color(bool user_color);
const std::array<float, 4> &marker_face_color() const;
float marker_face_alpha() const;
void marker_face_color(const std::array<float, 3> &color);
void marker_face_color(const std::array<float, 4> &color);
void marker_face_color(std::initializer_list<float> color);
void marker_face_color(std::string_view color);
void marker_face_color(enum color marker_face_color);
void marker_face_alpha(float alpha);
bool marker_face_user_color() const;
void marker_face_user_color(bool user_color);
bool marker_face() const;
void marker_face(bool marker_face);
private:
// use labels for non-custom markers:
// set label '▶︎' at 2,2
// set label '◀' at 3,3
// set label '✶' at 4,4
// plot cos(x) with linespoints linecolor rgb "#000000" dashtype 3
// linewidth 3 linetype 4 unset label
private:
// Line
std::array<float, 4> color_{0, 0, 0.447f, 0.741f};
// Did the user provide a color or is the color just a placeholder
bool user_color_{false};
enum line_style line_style_ { line_style::none };
float line_width_{0.5000};
// Marker
enum marker_style marker_style_ { marker_style::none };
std::array<float, 4> marker_color_{0, 0, 0.447f, 0.741f};
bool marker_user_color_{false};
std::string custom_marker_{""};
float marker_size_{6};
// Marker face
std::array<float, 4> marker_face_color_{0, 0.84f, 1., 1.};
bool marker_face_user_color_{false};
bool marker_face_ = false;
// Function to touch the parent element
std::function<void()> touch_function_;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_LINE_SPEC_H

View File

@ -0,0 +1,13 @@
//
// Copyright (c) 2023 alandefreitas (alandefreitas@gmail.com)
//
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
//
#ifndef MATPLOT_DETAIL_CONFIG_H
#define MATPLOT_DETAIL_CONFIG_H
#include <matplot/detail/exports.h>
#endif //MATPLOT_DETAIL_CONFIG_H

View File

@ -0,0 +1,42 @@
#ifndef MATPLOT_EXPORTS_H
#define MATPLOT_EXPORTS_H
#ifdef SHARED_EXPORTS_BUILT_AS_STATIC
# define MATPLOT_EXPORTS
# define MATPLOT_NO_EXPORT
#else
# ifndef MATPLOT_EXPORTS
# ifdef matplot_EXPORTS
/* We are building this library */
# define MATPLOT_EXPORTS __attribute__((visibility("default")))
# else
/* We are using this library */
# define MATPLOT_EXPORTS __attribute__((visibility("default")))
# endif
# endif
# ifndef MATPLOT_NO_EXPORT
# define MATPLOT_NO_EXPORT __attribute__((visibility("hidden")))
# endif
#endif
#ifndef MATPLOT_DEPRECATED
# define MATPLOT_DEPRECATED __attribute__ ((__deprecated__))
#endif
#ifndef MATPLOT_DEPRECATED_EXPORT
# define MATPLOT_DEPRECATED_EXPORT MATPLOT_EXPORTS MATPLOT_DEPRECATED
#endif
#ifndef MATPLOT_DEPRECATED_NO_EXPORT
# define MATPLOT_DEPRECATED_NO_EXPORT MATPLOT_NO_EXPORT MATPLOT_DEPRECATED
#endif
#if 0 /* DEFINE_NO_DEPRECATED */
# ifndef MATPLOT_NO_DEPRECATED
# define MATPLOT_NO_DEPRECATED
# endif
#endif
#endif /* MATPLOT_EXPORTS_H */

View File

@ -0,0 +1,485 @@
//
// Created by Alan Freitas on 10/08/20.
//
#ifndef MATPLOTPLUSPLUS_AXES_FUNCTIONS_H
#define MATPLOTPLUSPLUS_AXES_FUNCTIONS_H
#include <matplot/detail/config.h>
#include <matplot/core/axes_type.h>
namespace matplot {
using axes_handle = std::shared_ptr<class axes_type>;
/// \brief Create new axes
MATPLOT_EXPORTS
axes_handle axes();
/// \brief Create new axes
MATPLOT_EXPORTS
axes_handle axes(figure_handle parent, bool replace_if_overlap = false);
/// \brief Set the current axes
MATPLOT_EXPORTS
axes_handle axes(axes_handle h);
/// \brief Put axes in parent
MATPLOT_EXPORTS
axes_handle axes(axes_handle h, figure_handle parent,
bool replace_if_overlap = false);
/// \brief Create new axes in a specific position with replace = false
MATPLOT_EXPORTS
axes_handle axes(std::array<float, 4> position);
MATPLOT_EXPORTS
void hold(bool);
MATPLOT_EXPORTS
void hold(axes_handle, bool);
MATPLOT_EXPORTS
void hold(const std::vector<axes_handle> &axs, bool);
MATPLOT_EXPORTS
void box(bool);
MATPLOT_EXPORTS
void box(axes_handle, bool);
/// Set view with azimuth and elevation
MATPLOT_EXPORTS
void view(float azimuth, float elevation);
MATPLOT_EXPORTS
void view(axes_handle ax, float azimuth, float elevation);
/// Set view with azimuth and elevation
MATPLOT_EXPORTS
void rotate(float azimuth = 10., float elevation = 0.);
MATPLOT_EXPORTS
void rotate(axes_handle ax, float azimuth = 10., float elevation = 0.);
/// Coordinates of a vector that starts at the center of the
/// plot box and points toward the camera (line-of-sight vector)
MATPLOT_EXPORTS
std::pair<float, float> view(float x, float y, float z);
MATPLOT_EXPORTS
std::pair<float, float> view(axes_handle ax, float x, float y, float z);
/// Default line of sight for dim-D plots
/// If dim=2 "set view map"
/// If dim=3 set view to default
MATPLOT_EXPORTS
void view(size_t dim);
MATPLOT_EXPORTS
void view(axes_handle ax, size_t dim);
/// Get view values
MATPLOT_EXPORTS
std::pair<float, float> view();
MATPLOT_EXPORTS
std::pair<float, float> view(axes_handle ax);
/// \brief Create new axes in a subplot
/// If the axes exist, make it the current axes.
/// If the axes overlap with existing axes, these are deleted,
/// unless the position is identical.
MATPLOT_EXPORTS
axes_handle subplot(size_t rows, size_t cols, size_t plot_id,
bool replace_if_same_position = false);
MATPLOT_EXPORTS
axes_handle subplot(figure_handle, size_t rows, size_t cols, size_t plot_id,
bool replace_if_same_position = false);
/// \brief Make axes a subplot of its figure
MATPLOT_EXPORTS
axes_handle subplot(size_t rows, size_t cols, size_t plot_id,
axes_handle axes);
/// \brief Create new axes in a subplot covering all positions in P
MATPLOT_EXPORTS
axes_handle subplot(size_t rows, size_t cols,
std::initializer_list<size_t> P,
bool replace_if_same_position = false);
/// \brief Create new axes in a specific position
MATPLOT_EXPORTS
axes_handle subplot(figure_handle f, std::array<float, 4> position,
bool replace_if_same_position = false);
MATPLOT_EXPORTS
axes_handle subplot(std::array<float, 4> position,
bool replace_if_same_position = false);
/// \brief Make axes the current axes
/// Another way to axes(h)
MATPLOT_EXPORTS
axes_handle subplot(axes_handle h);
/// \brief Make axes in a tiled layout
/// This is only very basic support for tiled
/// layouts. It does not include a tiledlayout
/// class we can use to adjust padding, spacing,
/// title, etc.
MATPLOT_EXPORTS
void tiledlayout();
MATPLOT_EXPORTS
void tiledlayout(size_t rows, size_t cols);
MATPLOT_EXPORTS
axes_handle nexttile();
MATPLOT_EXPORTS
axes_handle nexttile(size_t index);
MATPLOT_EXPORTS
void title(std::string_view str);
MATPLOT_EXPORTS
void title(std::string_view str, const color_array &c);
template <class COLOR_TYPE>
void title(std::string_view str, COLOR_TYPE c) {
title(str, to_array(c));
}
MATPLOT_EXPORTS
void title(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void title(axes_handle ax, std::string_view str, const color_array &c);
template <class COLOR_TYPE>
void title(axes_handle ax, std::string_view str, COLOR_TYPE c) {
title(ax, str, to_array(c));
}
MATPLOT_EXPORTS
void title(legend_handle lgd, std::string_view str);
MATPLOT_EXPORTS
void sgtitle(std::string_view str);
MATPLOT_EXPORTS
void sgtitle(std::string_view str, const color_array &c);
template <class COLOR_TYPE>
void sgtitle(std::string_view str, COLOR_TYPE c) {
sgtitle(str, to_array(c));
}
MATPLOT_EXPORTS
void sgtitle(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void sgtitle(axes_handle ax, std::string_view str, const color_array &c);
template <class COLOR_TYPE>
void sgtitle(axes_handle ax, std::string_view str, COLOR_TYPE c) {
sgtitle(ax, str, to_array(c));
}
MATPLOT_EXPORTS
void xlabel(std::string_view str);
MATPLOT_EXPORTS
void xlabel(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void ylabel(std::string_view str);
MATPLOT_EXPORTS
void ylabel(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void y2label(std::string_view str);
MATPLOT_EXPORTS
void y2label(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void zlabel(std::string_view str);
MATPLOT_EXPORTS
void zlabel(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void xtickformat(std::string_view str);
MATPLOT_EXPORTS
void xtickformat(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void ytickformat(std::string_view str);
MATPLOT_EXPORTS
void ytickformat(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
void ztickformat(std::string_view str);
MATPLOT_EXPORTS
void ztickformat(axes_handle ax, std::string_view str);
MATPLOT_EXPORTS
std::string xtickformat();
MATPLOT_EXPORTS
std::string xtickformat(axes_handle ax);
MATPLOT_EXPORTS
std::string ytickformat();
MATPLOT_EXPORTS
std::string ytickformat(axes_handle ax);
MATPLOT_EXPORTS
std::string ztickformat();
MATPLOT_EXPORTS
std::string ztickformat(axes_handle ax);
MATPLOT_EXPORTS
void xticks(const std::vector<double> &ticks);
MATPLOT_EXPORTS
void xticks(axes_handle ax, const std::vector<double> &ticks);
MATPLOT_EXPORTS
void yticks(const std::vector<double> &ticks);
MATPLOT_EXPORTS
void yticks(axes_handle ax, const std::vector<double> &ticks);
MATPLOT_EXPORTS
void y2ticks(const std::vector<double> &ticks);
MATPLOT_EXPORTS
void y2ticks(axes_handle ax, const std::vector<double> &ticks);
MATPLOT_EXPORTS
void zticks(const std::vector<double> &ticks);
MATPLOT_EXPORTS
void zticks(axes_handle ax, const std::vector<double> &ticks);
MATPLOT_EXPORTS
void xticks(std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void xticks(axes_handle ax, std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void yticks(std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void yticks(axes_handle ax, std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void y2ticks(std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void y2ticks(axes_handle ax, std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void zticks(std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void zticks(axes_handle ax, std::initializer_list<double> ticks);
MATPLOT_EXPORTS
void xticks(keyword_automatic_type);
MATPLOT_EXPORTS
void xticks(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void yticks(keyword_automatic_type);
MATPLOT_EXPORTS
void yticks(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void y2ticks(keyword_automatic_type);
MATPLOT_EXPORTS
void y2ticks(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void zticks(keyword_automatic_type);
MATPLOT_EXPORTS
void zticks(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void xticklabels(const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void xticklabels(axes_handle ax, const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void yticklabels(const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void yticklabels(axes_handle ax, const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void y2ticklabels(const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void y2ticklabels(axes_handle ax, const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void zticklabels(const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void zticklabels(axes_handle ax, const std::vector<std::string> &ticks);
MATPLOT_EXPORTS
void xticklabels(std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void xticklabels(axes_handle ax, std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void yticklabels(std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void yticklabels(axes_handle ax, std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void y2ticklabels(std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void y2ticklabels(axes_handle ax, std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void zticklabels(std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void zticklabels(axes_handle ax, std::initializer_list<std::string> ticks);
MATPLOT_EXPORTS
void xticklabels(keyword_automatic_type);
MATPLOT_EXPORTS
void xticklabels(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void yticklabels(keyword_automatic_type);
MATPLOT_EXPORTS
void yticklabels(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void y2ticklabels(keyword_automatic_type);
MATPLOT_EXPORTS
void y2ticklabels(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void zticklabels(keyword_automatic_type);
MATPLOT_EXPORTS
void zticklabels(axes_handle ax, keyword_automatic_type);
MATPLOT_EXPORTS
void xtickangle(double degrees);
MATPLOT_EXPORTS
void xtickangle(axes_handle ax, double degrees);
MATPLOT_EXPORTS
void ytickangle(double degrees);
MATPLOT_EXPORTS
void ytickangle(axes_handle ax, double degrees);
MATPLOT_EXPORTS
void y2tickangle(double degrees);
MATPLOT_EXPORTS
void y2tickangle(axes_handle ax, double degrees);
MATPLOT_EXPORTS
void ztickangle(double degrees);
MATPLOT_EXPORTS
void ztickangle(axes_handle ax, double degrees);
MATPLOT_EXPORTS
double xtickangle();
MATPLOT_EXPORTS
double xtickangle(axes_handle ax);
MATPLOT_EXPORTS
double ytickangle();
MATPLOT_EXPORTS
double ytickangle(axes_handle ax);
MATPLOT_EXPORTS
double y2tickangle();
MATPLOT_EXPORTS
double y2tickangle(axes_handle ax);
MATPLOT_EXPORTS
double ztickangle();
MATPLOT_EXPORTS
double ztickangle(axes_handle ax);
MATPLOT_EXPORTS
void grid(axes_handle ax, bool v);
MATPLOT_EXPORTS
void grid(bool v);
/// \brief Get the current axes
MATPLOT_EXPORTS
axes_handle gca();
MATPLOT_EXPORTS
void cla();
MATPLOT_EXPORTS
void cla(axes_handle);
/// Put legends on the figure
MATPLOT_EXPORTS
legend_handle legend(axes_handle ax, const std::vector<std::string> &names);
MATPLOT_EXPORTS
legend_handle legend(const std::vector<std::string> &names);
MATPLOT_EXPORTS
legend_handle legend(axes_handle ax, bool visible = true);
MATPLOT_EXPORTS
legend_handle legend(bool visible = true);
MATPLOT_EXPORTS
legend_handle legend(std::vector<axes_object_handle> objs,
const std::vector<std::string> &names);
// Hackfix for a compiler bug in MSVC
namespace {
template <typename... Args>
legend_handle legend(axes_handle ax, std::string_view name,
Args const &... next_name) {
std::vector<std::string> legends = {std::string(name), std::string(next_name)...};
return ::matplot::legend(ax, legends);
}
template <typename... Args>
legend_handle legend(std::string_view name,
Args const &... next_name) {
return legend(gca(), name, next_name...);
}
} // namespace
MATPLOT_EXPORTS
void colormap(axes_handle ax, const std::vector<std::vector<double>> &map);
MATPLOT_EXPORTS
void colormap(const std::vector<std::vector<double>> &map);
MATPLOT_EXPORTS
std::vector<std::vector<double>> colormap(axes_handle ax);
MATPLOT_EXPORTS
std::vector<std::vector<double>> colormap();
template <class T>
void colororder(axes_handle ax, const std::vector<T> &order) {
ax->colororder(order);
}
template <class T> void colororder(const std::vector<T> &order) {
colororder(gca(), order);
}
template <class T> void colororder(std::initializer_list<T> order) {
colororder(gca(), std::vector<T>{order});
}
/// Set x limits
MATPLOT_EXPORTS
void xrange(const std::array<double, 2> &range);
MATPLOT_EXPORTS
void xrange(axes_handle ah, const std::array<double, 2> &range);
/// Set y limits
MATPLOT_EXPORTS
void yrange(const std::array<double, 2> &range);
MATPLOT_EXPORTS
void yrange(axes_handle ah, const std::array<double, 2> &range);
/// Enable colorbar axis
MATPLOT_EXPORTS
axis_type &colorbar();
MATPLOT_EXPORTS
axis_type &colorbar(axes_handle ah);
MATPLOT_EXPORTS
class axis_type &colorbar(bool v);
MATPLOT_EXPORTS
class axis_type &colorbar(axes_handle ah, bool v);
/// Set limits of x and y axes
MATPLOT_EXPORTS
void axis(const std::array<double, 4> &limits_x_y);
MATPLOT_EXPORTS
void axis(axes_handle axes_handle, const std::array<double, 4> &limits_x_y);
MATPLOT_EXPORTS
void axis(std::initializer_list<axes_handle> axes_handles,
const std::array<double, 4> &limits_x_y);
/// Make axis visible invisible
MATPLOT_EXPORTS
void axis(bool);
/// Set limits to automatic
MATPLOT_EXPORTS
void axis(keyword_automatic_type);
/// Set limits to manual
MATPLOT_EXPORTS
void axis(keyword_manual_type);
/// Reverse y-axis
MATPLOT_EXPORTS
void axis(keyword_ij_type);
/// Make xlim equal size (ratio -1)
MATPLOT_EXPORTS
void axis(keyword_equal_type);
MATPLOT_EXPORTS
void axis(axes_handle, keyword_equal_type);
/// Make xlim equal size (ratio -1)
MATPLOT_EXPORTS
void axis(keyword_tight_type);
MATPLOT_EXPORTS
void axis(axes_handle, keyword_tight_type);
/// Make xlim equal size (ratio 1)
MATPLOT_EXPORTS
void axis(keyword_square_type);
MATPLOT_EXPORTS
void axis(axes_handle, keyword_square_type);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_AXES_FUNCTIONS_H

View File

@ -0,0 +1,239 @@
//
// Created by Alan Freitas on 04/08/20.
//
#ifndef MATPLOTPLUSPLUS_AXES_LIM_H
#define MATPLOTPLUSPLUS_AXES_LIM_H
#include <matplot/core/axes_type.h>
namespace matplot {
inline std::array<double, 2> xlim() { return gca()->xlim(); }
inline void xlim(const std::array<double, 2> &lim) { gca()->xlim(lim); }
inline void xlim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->xlim(to_array<2>(lim));
}
}
template <class T, class... Args> void xlim(axes_handle ax, Args&&... args) {
ax->xlim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void xlim(NotAxesHandle<T> x, Args&&... args) {
gca()->xlim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> cblim() { return gca()->cblim(); }
inline void cblim(const std::array<double, 2> &lim) { gca()->cblim(lim); }
inline void cblim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->cblim(to_array<2>(lim));
}
}
template <class T, class... Args> void cblim(axes_handle ax, Args&&... args) {
ax->cblim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void cblim(NotAxesHandle<T> x, Args&&... args) {
gca()->cblim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> caxis() { return gca()->cblim(); }
inline void caxis(const std::array<double, 2> &lim) { gca()->cblim(lim); }
inline void caxis(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->cblim(to_array<2>(lim));
}
}
template <class T, class... Args> void caxis(axes_handle ax, Args&&... args) {
ax->cblim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void caxis(NotAxesHandle<T> x, Args&&... args) {
gca()->cblim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> x2lim() { return gca()->x2lim(); }
inline void x2lim(const std::array<double, 2> &lim) { gca()->x2lim(lim); }
inline void x2lim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->x2lim(to_array<2>(lim));
}
}
template <class T, class... Args> void x2lim(axes_handle ax, Args&&... args) {
ax->x2lim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void x2lim(NotAxesHandle<T> x, Args&&... args) {
gca()->x2lim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> ylim() { return gca()->ylim(); }
inline void ylim(const std::array<double, 2> &lim) { gca()->ylim(lim); }
inline void ylim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->ylim(to_array<2>(lim));
}
}
template <class T, class... Args> void ylim(axes_handle ax, Args&&... args) {
ax->ylim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void ylim(NotAxesHandle<T> x, Args&&... args) {
gca()->ylim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> y2lim() { return gca()->y2lim(); }
inline void y2lim(const std::array<double, 2> &lim) { gca()->y2lim(lim); }
inline void y2lim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->y2lim(to_array<2>(lim));
}
}
template <class T, class... Args> void y2lim(axes_handle ax, Args&&... args) {
ax->y2lim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void y2lim(NotAxesHandle<T> x, Args&&... args) {
gca()->y2lim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> zlim() { return gca()->zlim(); }
inline void zlim(const std::array<double, 2> &lim) { gca()->zlim(lim); }
inline void zlim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->zlim(to_array<2>(lim));
}
}
template <class T, class... Args> void zlim(axes_handle ax, Args&&... args) {
ax->zlim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void zlim(NotAxesHandle<T> x, Args&&... args) {
gca()->zlim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> rlim() { return gca()->rlim(); }
inline void rlim(const std::array<double, 2> &lim) { gca()->rlim(lim); }
inline void rlim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->rlim(to_array<2>(lim));
}
}
template <class T, class... Args> void rlim(axes_handle ax, Args&&... args) {
ax->rlim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void rlim(NotAxesHandle<T> x, Args&&... args) {
gca()->rlim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> tlim() { return gca()->tlim(); }
inline void tlim(const std::array<double, 2> &lim) { gca()->tlim(lim); }
inline void tlim(std::initializer_list<double> lim) {
if (lim.size() >= 2) {
gca()->tlim(to_array<2>(lim));
}
}
template <class T, class... Args> void tlim(axes_handle ax, Args&&... args) {
ax->tlim(std::forward<Args>(args)...);
}
template <class T, class... Args>
void tlim(NotAxesHandle<T> x, Args&&... args) {
gca()->tlim(x, std::forward<Args>(args)...);
}
inline std::array<double, 2> xlim(axes_handle ax) {
return ax->xlim();
}
inline void xlim(axes_handle ax, const std::array<double, 2> &lim) {
ax->xlim(lim);
}
inline std::array<double, 2> x2lim(axes_handle ax) {
return ax->x2lim();
}
inline void x2lim(axes_handle ax, const std::array<double, 2> &lim) {
ax->x2lim(lim);
}
inline std::array<double, 2> ylim(axes_handle ax) {
return ax->ylim();
}
inline void ylim(axes_handle ax, const std::array<double, 2> &lim) {
ax->ylim(lim);
}
inline std::array<double, 2> y2lim(axes_handle ax) {
return ax->y2lim();
}
inline void y2lim(axes_handle ax, const std::array<double, 2> &lim) {
ax->y2lim(lim);
}
inline std::array<double, 2> zlim(axes_handle ax) {
return ax->zlim();
}
inline void zlim(axes_handle ax, const std::array<double, 2> &lim) {
ax->zlim(lim);
}
inline std::array<double, 2> rlim(axes_handle ax) {
return ax->rlim();
}
inline void rlim(axes_handle ax, const std::array<double, 2> &lim) {
ax->rlim(lim);
}
inline std::array<double, 2> tlim(axes_handle ax) {
return ax->tlim();
}
inline void tlim(axes_handle ax, const std::array<double, 2> &lim) {
ax->tlim(lim);
}
} // namespace matplot
#endif // MATPLOTPLUSPLUS_AXES_LIM_H

View File

@ -0,0 +1,10 @@
//
// Created by Alan Freitas on 11/08/20.
//
#ifndef MATPLOTPLUSPLUS_FIGURE_FUNCTIONS_H
#define MATPLOTPLUSPLUS_FIGURE_FUNCTIONS_H
namespace matplot {}
#endif // MATPLOTPLUSPLUS_FIGURE_FUNCTIONS_H

View File

@ -0,0 +1,64 @@
//
// Created by Alan Freitas on 10/08/20.
//
#ifndef MATPLOTPLUSPLUS_HISTCOUNTS_H
#define MATPLOTPLUSPLUS_HISTCOUNTS_H
#include <vector>
#include <matplot/axes_objects/histogram.h>
namespace matplot {
/// Histogram count with custom binning and custom normalization
/// \return Pair with <values per bin, edges>
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>>
histcounts(const std::vector<double> &data,
enum histogram::binning_algorithm binning_alg =
histogram::binning_algorithm::automatic,
enum histogram::normalization normalization_alg =
histogram::normalization::count);
/// Histogram count with automatic binning and custom normalization
/// \return pair with <values,edges>
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>>
histcounts(const std::vector<double> &data,
enum histogram::normalization normalization_alg);
/// Histogram count with fixed number of bins
/// \return pair with <values,edges>
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>>
histcounts(const std::vector<double> &data, size_t nbins,
enum histogram::normalization normalization_alg =
histogram::normalization::count);
/// Histogram count with fixed edges
/// \return normalized values for each edge
MATPLOT_EXPORTS
std::vector<double>
histcounts(const std::vector<double> &data,
const std::vector<double> &edges,
enum histogram::normalization normalization_alg =
histogram::normalization::count);
/// Normalize the number of points in a bin
MATPLOT_EXPORTS
std::vector<std::vector<double>>
histnormalize2(const std::vector<std::vector<size_t>> &bin_count,
const std::vector<double> &xbin_edges,
const std::vector<double> &ybin_edges, size_t data_size,
enum histogram::normalization normalization_algorithm);
/// Count number of points in each bin defined by the 2 dimensional edges
MATPLOT_EXPORTS
std::vector<std::vector<double>> histcounts2(
const std::vector<double> &x_data, const std::vector<double> &y_data,
const std::vector<double> &x_edges, const std::vector<double> &y_edges,
enum histogram::normalization normalization_algorithm =
histogram::normalization::count);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_HISTCOUNTS_H

View File

@ -0,0 +1,989 @@
//
// Created by Alan Freitas on 2020-07-08.
//
#ifndef MATPLOTPLUSPLUS_PLOT_H
#define MATPLOTPLUSPLUS_PLOT_H
#include <matplot/util/concepts.h>
#include <matplot/util/handle_types.h>
#include <matplot/core/axes_type.h>
#include <matplot/core/figure_registry.h>
#include <matplot/axes_objects/function_line.h>
#include <matplot/axes_objects/string_function.h>
#include <matplot/freestanding/axes_functions.h>
/**
* These are the freestanding plot functions
* These functions will call the corresponding functions in the axes handle
* If no axes handle is given, it will call the function in the current
* axes handle in the current figure.
* If there is no current axes handle, one is created in the current figure.
* If there is no current figure, one is created.
*
* They always forward the arguments as a parameter pack class ...Args.
* One problem with this is that the functions cannot infer what to do with
* initializer lists. So one needs to pass an explicit vector or array to
* the functions. In some cases, we explicitly define these shortcut
* functions without templates to make the use of initializer lists
* possible.
*/
namespace matplot {
template <class T1, class... Args>
auto plot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->plot(x, std::forward<Args>(args)...);
}
template <class... Args> auto plot(axes_handle ax, Args&&... args) {
return ax->plot(std::forward<Args>(args)...);
}
inline line_handle plot(const std::vector<double> &x,
const std::vector<double> &y,
std::string_view line_spec = "") {
return gca()->plot(x, y, line_spec);
}
inline line_handle plot(const std::vector<double> &y,
std::string_view line_spec = "") {
return gca()->plot(y, line_spec);
}
template <class... Args>
auto plot(const std::vector<double> &x, const std::vector<double> &y,
std::string_view line_spec, Args&&... args) {
return gca()->plot(x, y, line_spec, std::forward<Args>(args)...);
}
template <class... Args>
auto plot(const std::vector<double> &x, const std::vector<double> &y,
const std::vector<double> &x2, Args&&... args) {
return gca()->plot(x, y, x2, std::forward<Args>(args)...);
}
template <class... Args>
auto plot(const std::vector<double> &y, std::string_view line_spec,
Args&&... args) {
return gca()->plot(y, line_spec, std::forward<Args>(args)...);
}
inline line_handle plot(axes_handle ax, const std::vector<double> &x,
const std::vector<double> &y,
std::string_view line_spec = "") {
return ax->plot(x, y, line_spec);
}
inline line_handle plot(axes_handle ax, const std::vector<double> &y,
std::string_view line_spec = "") {
return ax->plot(y, line_spec);
}
template <class... Args>
auto plot(axes_handle ax, const std::vector<double> &x,
const std::vector<double> &y, std::string_view line_spec,
Args&&... args) {
return ax->plot(x, y, line_spec, std::forward<Args>(args)...);
}
template <class... Args>
auto plot(axes_handle ax, const std::vector<double> &x,
const std::vector<double> &y, const std::vector<double> &x2,
Args&&... args) {
return ax->plot(x, y, x2, std::forward<Args>(args)...);
}
template <class... Args>
auto plot(axes_handle ax, const std::vector<double> &y,
std::string_view line_spec, Args&&... args) {
return ax->plot(y, line_spec, std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto loglog(NotAxesHandle<T1> x, Args&&... args) {
return gca()->loglog(x, std::forward<Args>(args)...);
}
template <class... Args> auto loglog(axes_handle ax, Args&&... args) {
return ax->loglog(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto semilogx(NotAxesHandle<T1> x, Args&&... args) {
return gca()->semilogx(x, std::forward<Args>(args)...);
}
template <class... Args> auto semilogx(axes_handle ax, Args&&... args) {
return ax->semilogx(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto semilogy(NotAxesHandle<T1> x, Args&&... args) {
return gca()->semilogy(x, std::forward<Args>(args)...);
}
template <class... Args> auto semilogy(axes_handle ax, Args&&... args) {
return ax->semilogy(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto rgbplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->rgbplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto rgbplot(axes_handle ax, Args&&... args) {
return ax->rgbplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto plot3(NotAxesHandle<T1> x, Args&&... args) {
return gca()->plot3(x, std::forward<Args>(args)...);
}
template <class... Args> auto plot3(axes_handle ax, Args&&... args) {
return ax->plot3(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto stairs(NotAxesHandle<T1> x, Args&&... args) {
return gca()->stairs(x, std::forward<Args>(args)...);
}
template <class... Args> auto stairs(axes_handle ax, Args&&... args) {
return ax->stairs(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto errorbar(NotAxesHandle<T1> x, Args&&... args) {
return gca()->errorbar(x, std::forward<Args>(args)...);
}
template <class... Args> auto errorbar(axes_handle ax, Args&&... args) {
return ax->errorbar(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto area(NotAxesHandle<T1> x, Args&&... args) {
return gca()->area(x, std::forward<Args>(args)...);
}
template <class... Args> auto area(axes_handle ax, Args&&... args) {
return ax->area(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto fplot(axes_handle ax, Args&&... args) {
return ax->fplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fimplicit(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fimplicit(x, std::forward<Args>(args)...);
}
template <class... Args> auto fimplicit(axes_handle ax, Args&&... args) {
return ax->fimplicit(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fplot3(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fplot3(x, std::forward<Args>(args)...);
}
template <class... Args> auto fplot3(axes_handle ax, Args&&... args) {
return ax->fplot3(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto hist(NotAxesHandle<T1> x, Args&&... args) {
return gca()->hist(x, std::forward<Args>(args)...);
}
template <class... Args> auto hist(axes_handle ax, Args&&... args) {
return ax->hist(std::forward<Args>(args)...);
}
inline size_t morebins(histogram_handle h, double bin_increase = 0.1) {
return h->morebins(bin_increase);
}
inline size_t fewerbins(histogram_handle h, double bin_decrease = 0.1) {
return h->fewerbins(bin_decrease);
}
template <class T1, class... Args>
auto binscatter(NotAxesHandle<T1> x, Args&&... args) {
return gca()->binscatter(x, std::forward<Args>(args)...);
}
template <class... Args> auto binscatter(axes_handle ax, Args&&... args) {
return ax->binscatter(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto hist2(NotAxesHandle<T1> x, Args&&... args) {
return gca()->hist2(x, std::forward<Args>(args)...);
}
template <class... Args> auto hist2(axes_handle ax, Args&&... args) {
return ax->hist2(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto bar(NotAxesHandle<T1> x, Args&&... args) {
return gca()->bar(x, std::forward<Args>(args)...);
}
template <class... Args> auto bar(axes_handle ax, Args&&... args) {
return ax->bar(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto barstacked(NotAxesHandle<T1> x, Args&&... args) {
return gca()->barstacked(x, std::forward<Args>(args)...);
}
template <class... Args> auto barstacked(axes_handle ax, Args&&... args) {
return ax->barstacked(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto heatmap(NotAxesHandle<T1> x, Args&&... args) {
return gca()->heatmap(x, std::forward<Args>(args)...);
}
template <class... Args> auto heatmap(axes_handle ax, Args&&... args) {
return ax->heatmap(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto pcolor(NotAxesHandle<T1> x, Args&&... args) {
return gca()->pcolor(x, std::forward<Args>(args)...);
}
template <class... Args> auto pcolor(axes_handle ax, Args&&... args) {
return ax->pcolor(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto parallelplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->parallelplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto parallelplot(axes_handle ax, Args&&... args) {
return ax->parallelplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto pie(NotAxesHandle<T1> x, Args&&... args) {
return gca()->pie(x, std::forward<Args>(args)...);
}
template <class... Args> auto pie(axes_handle ax, Args&&... args) {
return ax->pie(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto plotmatrix(NotFigureHandle<T1> x, Args&&... args) {
return gcf()->plotmatrix(x, std::forward<Args>(args)...);
}
template <class... Args> auto plotmatrix(figure_handle f, Args&&... args) {
return f->plotmatrix(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto scatter(NotAxesHandle<T1> x, Args&&... args) {
return gca()->scatter(x, std::forward<Args>(args)...);
}
template <class... Args> auto scatter(axes_handle ax, Args&&... args) {
return ax->scatter(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto scatter3(NotAxesHandle<T1> x, Args&&... args) {
return gca()->scatter3(x, std::forward<Args>(args)...);
}
template <class... Args> auto scatter3(axes_handle ax, Args&&... args) {
return ax->scatter3(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto wordcloud(NotAxesHandle<T1> x, Args&&... args) {
return gca()->wordcloud(x, std::forward<Args>(args)...);
}
template <class... Args> auto wordcloud(axes_handle ax, Args&&... args) {
return ax->wordcloud(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto pareto(NotAxesHandle<T1> x, Args&&... args) {
return gca()->pareto(x, std::forward<Args>(args)...);
}
template <class... Args> auto pareto(axes_handle ax, Args&&... args) {
return ax->pareto(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto stem(NotAxesHandle<T1> x, Args&&... args) {
return gca()->stem(x, std::forward<Args>(args)...);
}
template <class... Args> auto stem(axes_handle ax, Args&&... args) {
return ax->stem(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto stem3(NotAxesHandle<T1> x, Args&&... args) {
return gca()->stem3(x, std::forward<Args>(args)...);
}
template <class... Args> auto stem3(axes_handle ax, Args&&... args) {
return ax->stem3(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto geobubble(NotAxesHandle<T1> x, Args&&... args) {
return gca()->geobubble(x, std::forward<Args>(args)...);
}
template <class... Args> auto geobubble(axes_handle ax, Args&&... args) {
return ax->geobubble(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto geodensityplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->geodensityplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto geodensityplot(axes_handle ax, Args&&... args) {
return ax->geodensityplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto geoplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->geoplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto geoplot(axes_handle ax, Args&&... args) {
return ax->geoplot(std::forward<Args>(args)...);
}
inline auto geoplot() { return gca()->geoplot(); }
template <class T1, class... Args>
void geolimits(NotAxesHandle<T1> x, Args&&... args) {
gca()->geolimits(x, std::forward<Args>(args)...);
}
template <class... Args> void geolimits(axes_handle ax, Args&&... args) {
ax->geolimits(std::forward<Args>(args)...);
}
inline void geolimits(const std::array<double, 2> &latitude,
const std::array<double, 2> &longitude) {
gca()->geolimits(latitude, longitude);
}
inline void geolimits(axes_handle ax, const std::array<double, 2> &latitude,
const std::array<double, 2> &longitude) {
ax->geolimits(latitude, longitude);
}
template <class T1, class... Args>
auto geoscatter(NotAxesHandle<T1> x, Args&&... args) {
return gca()->geoscatter(x, std::forward<Args>(args)...);
}
template <class... Args> auto geoscatter(axes_handle ax, Args&&... args) {
return ax->geoscatter(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto compass(NotAxesHandle<T1> x, Args&&... args) {
return gca()->compass(x, std::forward<Args>(args)...);
}
template <class... Args> auto compass(axes_handle ax, Args&&... args) {
return ax->compass(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto ezpolar(NotAxesHandle<T1> x, Args&&... args) {
return gca()->ezpolar(x, std::forward<Args>(args)...);
}
template <class... Args> auto ezpolar(axes_handle ax, Args&&... args) {
return ax->ezpolar(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto polarhistogram(NotAxesHandle<T1> x, Args&&... args) {
return gca()->polarhistogram(x, std::forward<Args>(args)...);
}
template <class... Args> auto polarhistogram(axes_handle ax, Args&&... args) {
return ax->polarhistogram(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto polarplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->polarplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto polarplot(axes_handle ax, Args&&... args) {
return ax->polarplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto polarscatter(NotAxesHandle<T1> x, Args&&... args) {
return gca()->polarscatter(x, std::forward<Args>(args)...);
}
template <class... Args> auto polarscatter(axes_handle ax, Args&&... args) {
return ax->polarscatter(std::forward<Args>(args)...);
}
template <class... Args> auto contour(axes_handle ax, Args&&... args) {
return ax->contour(std::forward<Args>(args)...);
}
template <class T1, class T2, class T3>
auto contour(axes_handle ax, T1 v1, T2 v2, T3 v3,
const std::vector<double> &il) {
return ax->contour(v1, v2, v3, il);
}
template <class T1, class... Args>
auto contour(NotAxesHandle<T1> x, Args&&... args) {
return contour(gca(), x, std::forward<Args>(args)...);
}
template <class... Args> auto contourf(axes_handle ax, Args&&... args) {
return ax->contourf(std::forward<Args>(args)...);
}
template <class T1, class T2, class T3>
auto contourf(axes_handle ax, T1 v1, T2 v2, T3 v3,
const std::vector<double> &il) {
return ax->contourf(v1, v2, v3, il);
}
template <class T1, class T2, class T3>
auto contourf(T1 v1, T2 v2, T3 v3, const std::vector<double> &il) {
return gca()->contourf(v1, v2, v3, il);
}
template <class T1, class... Args>
auto contourf(NotAxesHandle<T1> x, Args&&... args) {
return contourf(gca(), x, std::forward<Args>(args)...);
}
template <class... Args> auto fcontour(axes_handle ax, Args&&... args) {
return ax->fcontour(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fcontour(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fcontour(x, std::forward<Args>(args)...);
}
inline contours_handle fcontour(axes_type::fcontour_function_type fn,
const std::array<double, 4> &xy_range,
std::vector<double> levels,
std::string_view line_spec = "") {
return gca()->fcontour(fn, xy_range, levels, line_spec);
}
inline contours_handle fcontour(axes_type::fcontour_function_type fn,
std::string_view line_spec) {
return gca()->fcontour(fn, line_spec);
}
inline contours_handle fcontour(axes_handle ax,
axes_type::fcontour_function_type fn,
const std::array<double, 4> &xy_range,
std::vector<double> levels,
std::string_view line_spec = "") {
return ax->fcontour(fn, xy_range, levels, line_spec);
}
inline contours_handle fcontour(axes_handle ax,
axes_type::fcontour_function_type fn,
std::string_view line_spec) {
return ax->fcontour(fn, line_spec);
}
template <class T1, class... Args>
auto feather(NotAxesHandle<T1> x, Args&&... args) {
return gca()->feather(x, std::forward<Args>(args)...);
}
template <class... Args> auto feather(axes_handle ax, Args&&... args) {
return ax->feather(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto quiver(NotAxesHandle<T1> x, Args&&... args) {
return gca()->quiver(x, std::forward<Args>(args)...);
}
template <class... Args> auto quiver(axes_handle ax, Args&&... args) {
return ax->quiver(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto quiver3(NotAxesHandle<T1> x, Args&&... args) {
return gca()->quiver3(x, std::forward<Args>(args)...);
}
template <class... Args> auto quiver3(axes_handle ax, Args&&... args) {
return ax->quiver3(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fence(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fence(x, std::forward<Args>(args)...);
}
template <class... Args> auto fence(axes_handle ax, Args&&... args) {
return ax->fence(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fmesh(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fmesh(x, std::forward<Args>(args)...);
}
template <class... Args> auto fmesh(axes_handle ax, Args&&... args) {
return ax->fmesh(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fsurf(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fsurf(x, std::forward<Args>(args)...);
}
template <class... Args> auto fsurf(axes_handle ax, Args&&... args) {
return ax->fsurf(std::forward<Args>(args)...);
}
inline surface_handle fsurf(axes_type::fcontour_function_type fn,
const std::array<double, 2> &x_range,
const std::array<double, 2> &y_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(fn, x_range, y_range, line_spec, mesh_density);
}
inline surface_handle fsurf(axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 2> &u_range,
const std::array<double, 2> &v_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(funx, funy, funz, u_range, v_range, line_spec,
mesh_density);
}
/// Function surf
/// Grid / Both ranges in the same array size 4
inline surface_handle fsurf(axes_type::fcontour_function_type fn,
const std::array<double, 4> &xy_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(fn, xy_range, line_spec, mesh_density);
}
/// Function surf
/// Grid / Both ranges in the same array size 4
inline surface_handle fsurf(axes_type::fcontour_function_type fn,
std::initializer_list<double> xy_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(fn, xy_range, line_spec, mesh_density);
}
/// Parametric / Both ranges in the same array size 4
inline surface_handle fsurf(axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 4> &uv_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(funx, funy, funz, uv_range, line_spec,
mesh_density);
}
/// Function surf
/// Grid / Both ranges in the same array size 2
inline surface_handle
fsurf(axes_type::fcontour_function_type fn,
const std::array<double, 2> &xy_range = {-5, +5},
std::string_view line_spec = "", double mesh_density = 40) {
return gca()->fsurf(fn, xy_range, line_spec, mesh_density);
}
/// Function surf
/// Parametric / Both ranges in the same array size 2
inline surface_handle
fsurf(axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 2> &uv_range = {-5, +5},
std::string_view line_spec = "", double mesh_density = 40) {
return gca()->fsurf(funx, funy, funz, uv_range, line_spec,
mesh_density);
}
inline surface_handle fsurf(axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
std::initializer_list<double> &uv_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return gca()->fsurf(funx, funy, funz, uv_range, line_spec,
mesh_density);
}
/// Function surf - Core function
inline surface_handle fsurf(axes_handle ax,
axes_type::fcontour_function_type fn,
const std::array<double, 2> &x_range,
const std::array<double, 2> &y_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return ax->fsurf(fn, x_range, y_range, line_spec, mesh_density);
}
/// Function surf - Parametric
/// Core parametric function
inline surface_handle fsurf(axes_handle ax,
axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 2> &u_range,
const std::array<double, 2> &v_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return ax->fsurf(funx, funy, funz, u_range, v_range, line_spec,
mesh_density);
}
/// Function surf
/// Grid / Both ranges in the same array size 4
inline surface_handle fsurf(axes_handle ax,
axes_type::fcontour_function_type fn,
const std::array<double, 4> &xy_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return ax->fsurf(fn, xy_range, line_spec, mesh_density);
}
/// Parametric / Both ranges in the same array size 4
inline surface_handle fsurf(axes_handle ax,
axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 4> &uv_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return ax->fsurf(funx, funy, funz, uv_range, line_spec, mesh_density);
}
/// Function surf
/// Grid / Both ranges in the same array size 2
inline surface_handle
fsurf(axes_handle ax, axes_type::fcontour_function_type fn,
const std::array<double, 2> &xy_range = {-5, +5},
std::string_view line_spec = "", double mesh_density = 40) {
return ax->fsurf(fn, xy_range, line_spec, mesh_density);
}
/// Function surf
/// Parametric / Both ranges in the same array size 2
inline surface_handle
fsurf(axes_handle ax, axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
const std::array<double, 2> &uv_range = {-5, +5},
std::string_view line_spec = "", double mesh_density = 40) {
return ax->fsurf(funx, funy, funz, uv_range, line_spec, mesh_density);
}
inline surface_handle fsurf(axes_handle ax,
axes_type::fcontour_function_type funx,
axes_type::fcontour_function_type funy,
axes_type::fcontour_function_type funz,
std::initializer_list<double> &uv_range,
std::string_view line_spec = "",
double mesh_density = 40) {
return ax->fsurf(funx, funy, funz, uv_range, line_spec, mesh_density);
}
template <class T1, class... Args>
auto mesh(NotAxesHandle<T1> x, Args&&... args) {
return gca()->mesh(x, std::forward<Args>(args)...);
}
template <class... Args> auto mesh(axes_handle ax, Args&&... args) {
return ax->mesh(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto meshc(NotAxesHandle<T1> x, Args&&... args) {
return gca()->meshc(x, std::forward<Args>(args)...);
}
template <class... Args> auto meshc(axes_handle ax, Args&&... args) {
return ax->meshc(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto meshz(NotAxesHandle<T1> x, Args&&... args) {
return gca()->meshz(x, std::forward<Args>(args)...);
}
template <class... Args> auto meshz(axes_handle ax, Args&&... args) {
return ax->meshz(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto ribbon(NotAxesHandle<T1> x, Args&&... args) {
return gca()->ribbon(x, std::forward<Args>(args)...);
}
template <class... Args> auto ribbon(axes_handle ax, Args&&... args) {
return ax->ribbon(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto surf(NotAxesHandle<T1> x, Args&&... args) {
return gca()->surf(x, std::forward<Args>(args)...);
}
template <class... Args> auto surf(axes_handle ax, Args&&... args) {
return ax->surf(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto surfc(NotAxesHandle<T1> x, Args&&... args) {
return gca()->surfc(x, std::forward<Args>(args)...);
}
template <class... Args> auto surfc(axes_handle ax, Args&&... args) {
return ax->surfc(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto waterfall(NotAxesHandle<T1> x, Args&&... args) {
return gca()->waterfall(x, std::forward<Args>(args)...);
}
template <class... Args> auto waterfall(axes_handle ax, Args&&... args) {
return ax->waterfall(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto graph(NotAxesHandle<T1> x, Args&&... args) {
return gca()->graph(x, std::forward<Args>(args)...);
}
template <class... Args> auto graph(axes_handle ax, Args&&... args) {
return ax->graph(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto imshow(NotAxesHandle<T1> x, Args&&... args) {
return gca()->imshow(x, std::forward<Args>(args)...);
}
template <class... Args> auto imshow(axes_handle ax, Args&&... args) {
return ax->imshow(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto image(NotAxesHandle<T1> x, Args&&... args) {
return gca()->image(x, std::forward<Args>(args)...);
}
template <class... Args> auto image(axes_handle ax, Args&&... args) {
return ax->image(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto text(NotAxesHandle<T1> x, Args&&... args) {
return gca()->text(x, std::forward<Args>(args)...);
}
template <class... Args> auto text(axes_handle ax, Args&&... args) {
return ax->text(std::forward<Args>(args)...);
}
inline labels_handle text(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<std::string> &texts) {
return gca()->text(x, y, texts);
}
inline labels_handle text(const std::vector<double> &x,
const std::vector<double> &y,
std::string_view str) {
return gca()->text(x, y, str);
}
inline labels_handle text(axes_handle ax, const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<std::string> &texts) {
return ax->text(x, y, texts);
}
inline labels_handle text(axes_handle ax, const std::vector<double> &x,
const std::vector<double> &y,
std::string_view str) {
return ax->text(x, y, str);
}
template <class T1, class... Args>
auto arrow(NotAxesHandle<T1> x, Args&&... args) {
return gca()->arrow(x, std::forward<Args>(args)...);
}
template <class... Args> auto arrow(axes_handle ax, Args&&... args) {
return ax->arrow(std::forward<Args>(args)...);
}
inline auto line(double x1, double y1, double x2, double y2) {
return gca()->line(x1, y1, x2, y2);
}
inline auto line(axes_handle ax, double x1, double y1, double x2,
double y2) {
return ax->line(x1, y1, x2, y2);
}
template <class T1, class... Args>
auto textarrow(NotAxesHandle<T1> x, Args&&... args) {
return gca()->textarrow(x, std::forward<Args>(args)...);
}
template <class... Args> auto textarrow(axes_handle ax, Args&&... args) {
return ax->textarrow(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto rectangle(NotAxesHandle<T1> x, Args&&... args) {
return gca()->rectangle(x, std::forward<Args>(args)...);
}
template <class... Args> auto rectangle(axes_handle ax, Args&&... args) {
return ax->rectangle(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto textbox(NotAxesHandle<T1> x, Args&&... args) {
return gca()->textbox(x, std::forward<Args>(args)...);
}
template <class... Args> auto textbox(axes_handle ax, Args&&... args) {
return ax->textbox(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto fill(NotAxesHandle<T1> x, Args&&... args) {
return gca()->fill(x, std::forward<Args>(args)...);
}
template <class... Args> auto fill(axes_handle ax, Args&&... args) {
return ax->fill(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto polygon(NotAxesHandle<T1> x, Args&&... args) {
return gca()->polygon(x, std::forward<Args>(args)...);
}
template <class... Args> auto polygon(axes_handle ax, Args&&... args) {
return ax->polygon(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto ellipse(NotAxesHandle<T1> x, Args&&... args) {
return gca()->ellipse(x, std::forward<Args>(args)...);
}
template <class... Args> auto ellipse(axes_handle ax, Args&&... args) {
return ax->ellipse(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto digraph(NotAxesHandle<T1> x, Args&&... args) {
return gca()->digraph(x, std::forward<Args>(args)...);
}
template <class... Args> auto digraph(axes_handle ax, Args&&... args) {
return ax->digraph(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto imagesc(NotAxesHandle<T1> x, Args&&... args) {
return gca()->imagesc(x, std::forward<Args>(args)...);
}
template <class... Args> auto imagesc(axes_handle ax, Args&&... args) {
return ax->imagesc(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto boxplot(NotAxesHandle<T1> x, Args&&... args) {
return gca()->boxplot(x, std::forward<Args>(args)...);
}
template <class... Args> auto boxplot(axes_handle ax, Args&&... args) {
return ax->boxplot(std::forward<Args>(args)...);
}
template <class T1, class... Args>
auto boxchart(NotAxesHandle<T1> x, Args&&... args) {
return gca()->boxchart(x, std::forward<Args>(args)...);
}
template <class... Args> auto boxchart(axes_handle ax, Args&&... args) {
return ax->boxchart(std::forward<Args>(args)...);
}
inline void show() { return gcf()->show(); }
inline void show(figure_handle f) { f->show(); }
inline bool save(const std::string &filename) {
return gcf()->save(filename);
}
inline bool save(figure_handle f, const std::string &filename,
const std::string &format) {
return f->save(filename, format);
}
inline bool save(const std::string &filename, const std::string &format) {
return gcf()->save(filename, format);
}
inline bool save(figure_handle f, const std::string &filename) {
return f->save(filename);
}
} // namespace matplot
#endif // MATPLOTPLUSPLUS_PLOT_H

View File

@ -0,0 +1,51 @@
//
// Created by Alan Freitas on 2020-07-03.
//
#ifndef MATPLOTPLUSPLUS_MATPLOT_H
#define MATPLOTPLUSPLUS_MATPLOT_H
// Common / util
#include <matplot/util/common.h>
#include <matplot/util/concepts.h>
#include <matplot/util/geodata.h>
#include <matplot/util/handle_types.h>
#include <matplot/util/type_traits.h>
// Backends
#include <matplot/backend/backend_interface.h>
#include <matplot/backend/backend_registry.h>
#include <matplot/backend/gnuplot.h>
// #include <matplot/backend/opengl_3.h> // Don't include opengl by default
// Figure and axes
#include <matplot/core/axes_type.h>
#include <matplot/core/axis_type.h>
#include <matplot/core/figure_type.h>
// Axes objects
#include <matplot/axes_objects/bars.h>
#include <matplot/axes_objects/box_chart.h>
#include <matplot/axes_objects/circles.h>
#include <matplot/axes_objects/contours.h>
#include <matplot/axes_objects/error_bar.h>
#include <matplot/axes_objects/filled_area.h>
#include <matplot/axes_objects/function_line.h>
#include <matplot/axes_objects/histogram.h>
#include <matplot/axes_objects/labels.h>
#include <matplot/axes_objects/line.h>
#include <matplot/axes_objects/matrix.h>
#include <matplot/axes_objects/network.h>
#include <matplot/axes_objects/parallel_lines.h>
#include <matplot/axes_objects/stair.h>
#include <matplot/axes_objects/string_function.h>
#include <matplot/axes_objects/surface.h>
#include <matplot/axes_objects/vectors.h>
// Free-standing functions
#include <matplot/freestanding/axes_functions.h>
#include <matplot/freestanding/axes_lim.h>
#include <matplot/freestanding/histcounts.h>
#include <matplot/freestanding/plot.h>
#endif // MATPLOTPLUSPLUS_MATPLOT_H

View File

@ -0,0 +1,242 @@
//
// Created by Alan Freitas on 2020-07-04.
//
#ifndef MATPLOTPLUSPLUS_COLORS_H
#define MATPLOTPLUSPLUS_COLORS_H
#include <matplot/detail/config.h>
#include <array>
#include <string>
#include <vector>
namespace matplot {
enum class color {
blue,
black,
red,
green,
yellow,
cyan,
magenta,
white,
none,
};
MATPLOT_EXPORTS
std::string to_string(matplot::color c);
MATPLOT_EXPORTS
matplot::color string_to_color(std::string_view s);
MATPLOT_EXPORTS
matplot::color char_to_color(char c);
MATPLOT_EXPORTS
bool is_valid_color_char(char c);
MATPLOT_EXPORTS
std::array<float, 4> to_array(matplot::color c);
template <class T> std::array<float, 4> to_array(std::vector<T> c) {
std::array<float, 4> r{0.f, 0.f, 0.f, 0.f};
if (c.size() == 1) {
r[0] = 0.f;
r[1] = static_cast<float>(c[0]);
r[2] = static_cast<float>(c[0]);
r[3] = static_cast<float>(c[0]);
} else if (c.size() == 3) {
r[0] = 0.f;
r[1] = static_cast<float>(c[0]);
r[2] = static_cast<float>(c[1]);
r[3] = static_cast<float>(c[2]);
} else if (c.size() == 4) {
r[0] = static_cast<float>(c[0]);
r[1] = static_cast<float>(c[1]);
r[2] = static_cast<float>(c[2]);
r[3] = static_cast<float>(c[3]);
}
return r;
}
MATPLOT_EXPORTS
std::array<float, 4> to_array(std::string_view str_color);
MATPLOT_EXPORTS
std::string to_string(const std::array<float, 4> &c);
MATPLOT_EXPORTS
std::string to_string(const std::array<float, 3> &c);
constexpr std::array<float, 4> default_color(size_t index) {
constexpr size_t num_default_colors = 7;
size_t color_index = index % num_default_colors;
switch (color_index) {
case 0:
return {0, 0, 0.447f, 0.741f};
case 1:
return {0, 0.85f, 0.325f, 0.098f};
case 2:
return {0, 0.929f, 0.694f, 0.125f};
case 3:
return {0, 0.494f, 0.184f, 0.556f};
case 4:
return {0, 0.466f, 0.674f, 0.188f};
case 5:
return {0, 0.301f, 0.745f, 0.933f};
case 6:
return {0, 0.635f, 0.078f, 0.184f};
default:
return {};
}
}
namespace palette {
/*
* \see
* - https://doi.org/10.1179%2Fcaj.1996.33.2.79
* - https://bids.github.io/colormap/
* - https://dx.doi.org/10.1371/journal.pone.0199239
* - https://dx.doi.org/10.5670/oceanog.2016.66
* - https://dx.doi.org/10.1071/aseg2015ab107
* - https://zenodo.org/record/4153113
*/
MATPLOT_EXPORTS
std::vector<std::vector<double>> accent(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> blues(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> brbg(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> bugn(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> bupu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> chromajs(size_t n = 9);
MATPLOT_EXPORTS
std::vector<std::vector<double>> dark2(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> gnbu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> gnpu(size_t n = 10);
MATPLOT_EXPORTS
std::vector<std::vector<double>> greens(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> greys(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> inferno(size_t n = 256);
MATPLOT_EXPORTS
std::vector<std::vector<double>> jet(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> turbo(size_t n = 256);
MATPLOT_EXPORTS
std::vector<std::vector<double>> magma(size_t n = 256);
MATPLOT_EXPORTS
std::vector<std::vector<double>> oranges(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> orrd(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> paired(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> parula(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> pastel1(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> pastel2(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> piyg(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> plasma(size_t n = 256);
MATPLOT_EXPORTS
std::vector<std::vector<double>> prgn(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> pubu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> pubugn(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> puor(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> purd(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> purples(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> rdbu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> rdgy(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> rdpu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> rdylbu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> rdylgn(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> reds(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> sand(size_t n = 10);
MATPLOT_EXPORTS
std::vector<std::vector<double>> set1(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> set2(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> set3(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> spectral(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> viridis(size_t n = 256);
MATPLOT_EXPORTS
std::vector<std::vector<double>> whylrd(size_t n = 5);
MATPLOT_EXPORTS
std::vector<std::vector<double>> ylgn(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> ylgnbu(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> ylorbr(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> ylorrd(size_t n = 8);
MATPLOT_EXPORTS
std::vector<std::vector<double>> ylrd(size_t n = 4);
MATPLOT_EXPORTS
std::vector<std::vector<double>> hsv(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> hot(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> cool(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> spring(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> summer(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> autumn(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> winter(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> gray(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> bone(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> copper(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> pink(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> lines(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> colorcube(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> prism(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> flag(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> white(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> default_map(size_t n = 64);
MATPLOT_EXPORTS
std::vector<std::vector<double>> default_colors_map(size_t n = 7);
} // namespace palette
MATPLOT_EXPORTS
std::array<float, 4>
colormap_interpolation(double value, double min, double max,
const std::vector<std::vector<double>> &cm);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_COLORS_H

View File

@ -0,0 +1,679 @@
//
// Created by Alan Freitas on 2020-07-03.
//
#ifndef MATPLOTPLUSPLUS_COMMON_H
#define MATPLOTPLUSPLUS_COMMON_H
#include <matplot/detail/config.h>
#include <algorithm>
#include <cctype>
#include <complex>
#include <functional>
#include <map>
#include <matplot/util/concepts.h>
#include <numeric>
#include <sstream>
#include <string>
#include <string_view>
#include <vector>
namespace matplot {
MATPLOT_EXPORTS
bool iequals(std::string_view str1, std::string_view str2);
MATPLOT_EXPORTS
bool is_true(std::string_view str);
MATPLOT_EXPORTS
bool is_false(std::string_view str);
MATPLOT_EXPORTS
std::string run_and_get_output(const std::string &command);
MATPLOT_EXPORTS
std::string escape(std::string_view label);
inline void ltrim(std::string &s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {
return !std::isspace(ch);
}));
}
inline void rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(),
[](int ch) { return !std::isspace(ch); })
.base(),
s.end());
}
inline void rtrim(std::string &s, char d) {
s.erase(
std::find_if(s.rbegin(), s.rend(), [d](int ch) { return ch != d; })
.base(),
s.end());
}
template <class T> std::string num2str(Arithmetic<T> num) {
std::ostringstream ss;
ss.precision(10);
ss << std::fixed;
ss << num;
return ss.str();
}
template <class T>
std::string num2str(Arithmetic<T> num, const std::string &format) {
constexpr int max_buffer_size = 100;
char buffer[max_buffer_size];
int cx = snprintf(buffer, max_buffer_size, format.c_str(), num);
if (cx >= 0 && cx < max_buffer_size) {
return std::string(buffer);
} else {
return num2str(num);
}
}
template <class T = double> T str2num(std::string_view text) {
std::istringstream ss((std::string(text)));
T result;
return ss >> result ? result : 0;
}
using vector_1d = std::vector<double>;
using vector_2d = std::vector<vector_1d>;
MATPLOT_EXPORTS
std::vector<double> linspace(double lower_bound, double upper_bound);
MATPLOT_EXPORTS
std::vector<double> linspace(double lower_bound, double upper_bound,
size_t n);
MATPLOT_EXPORTS
std::vector<double> logspace(double lower_bound, double upper_bound);
MATPLOT_EXPORTS
std::vector<double> logspace(double lower_bound, double upper_bound,
size_t n);
MATPLOT_EXPORTS
std::vector<double> iota(double lower_bound, double upper_bound);
MATPLOT_EXPORTS
std::vector<double> iota(double lower_bound, double step,
double upper_bound);
MATPLOT_EXPORTS
vector_1d transform(const vector_1d &x, std::function<double(double)> fn);
MATPLOT_EXPORTS
vector_1d transform(const vector_1d &x, const vector_1d &y,
std::function<double(double, double)> fn);
MATPLOT_EXPORTS
vector_2d transform(const vector_2d &x, std::function<double(double)> fn);
MATPLOT_EXPORTS
vector_2d transform(const vector_2d &x, const vector_2d &y,
std::function<double(double, double)> fn);
MATPLOT_EXPORTS
vector_1d flatten(const vector_2d &x);
MATPLOT_EXPORTS
std::vector<double> unique(const std::vector<double> &x);
MATPLOT_EXPORTS
double min(const std::vector<double> &x);
MATPLOT_EXPORTS
double min(const std::vector<std::vector<double>> &x);
MATPLOT_EXPORTS
double max(const std::vector<double> &x);
MATPLOT_EXPORTS
double max(const std::vector<std::vector<double>> &x);
MATPLOT_EXPORTS
std::pair<double, double> minmax(const std::vector<double> &x);
template <typename T> T min(T val1, T val2) {
return val1 < val2 ? val1 : val2;
}
template <typename T, typename... Ts> T min(T val1, T val2, Ts &&...vs) {
return val1 < val2 ? min(val1, std::forward<Ts>(vs)...)
: min(val2, std::forward<Ts>(vs)...);
}
template <typename T> T max(T val1, T val2) {
return val1 > val2 ? val1 : val2;
}
template <typename T, typename... Ts> T max(T val1, T val2, Ts &&...vs) {
return val1 > val2 ? max(val1, std::forward<Ts>(vs)...)
: max(val2, std::forward<Ts>(vs)...);
}
MATPLOT_EXPORTS
double mean(const std::vector<double> &x);
MATPLOT_EXPORTS
double stddev(const std::vector<double> &x);
MATPLOT_EXPORTS
void wait();
constexpr double pi =
3.141592653589793238462643383279502884197169399375105820974944592307816406286;
constexpr double NaN = std::numeric_limits<double>::quiet_NaN();
template <class T> std::vector<T> vectorize(const std::vector<T> &result) {
return result;
}
template <class T> std::vector<T> vectorize(const T &result) {
return std::vector<T>({result});
}
template <size_t N, class T>
inline std::array<T, N> to_array(std::initializer_list<T> il) {
std::array<T, N> r{};
auto r_it = r.begin();
auto il_it = il.begin();
while (r_it != r.end() && il_it != il.end()) {
*r_it = *il_it;
++r_it;
++il_it;
}
return r;
}
template <size_t N, class T>
inline std::array<T, N> to_array(const std::vector<T> &v) {
std::array<T, N> r{};
auto r_it = r.begin();
auto v_it = v.begin();
while (r_it != r.end() && v_it != v.end()) {
*r_it = *v_it;
++r_it;
++v_it;
}
return r;
}
namespace detail {
template <typename T, typename U>
using forward_or_copy =
std::conditional_t<std::is_same_v<T, U>, const U &, U>;
}
template <class T>
detail::forward_or_copy<T, vector_1d> to_vector_1d(const T &v) {
if constexpr (std::is_same_v<T, vector_1d>) {
return v;
} else {
using std::begin, std::end;
vector_1d r(v.size());
std::transform(v.begin(), v.end(), r.begin(), [](const auto &x) {
return static_cast<double>(x);
});
return r;
}
}
template <class T>
detail::forward_or_copy<T, vector_2d> to_vector_2d(const T &v) {
if constexpr (std::is_same_v<T, vector_2d>) {
return v;
} else {
using std::begin, std::end;
vector_2d r(std::distance(begin(v), end(v)));
std::transform(
begin(v), end(v), r.begin(),
[](auto &&e) -> vector_1d { return to_vector_1d(e); });
return r;
}
}
template <class T>
detail::forward_or_copy<T, std::vector<vector_2d>>
to_vector_3d(const T &v) {
if constexpr (std::is_same_v<T, std::vector<vector_2d>>) {
return v;
} else {
using std::begin, std::end;
std::vector<vector_2d> r(std::distance(begin(v), end(v)));
std::transform(
begin(v), end(v), r.begin(),
[](auto &&e) -> vector_2d { return to_vector_2d(e); });
return r;
}
}
template <class T> inline T norm(const std::vector<T> &v) {
T sum = 0.;
for (const auto &vk : v) {
sum += pow(vk, 2.);
}
return sqrt(sum);
}
MATPLOT_EXPORTS
double randn(double mean, double stddev);
MATPLOT_EXPORTS
std::vector<double> randn(size_t n, double mean, double stddev);
/// Exponential distribution
MATPLOT_EXPORTS
double rande(double lambda, double multiplier = 1.0);
MATPLOT_EXPORTS
std::vector<double> rande(size_t n, double lambda, double multiplier = 1.0);
/// Pareto distribution
MATPLOT_EXPORTS
double randp(double scale, double shape = 1.0);
MATPLOT_EXPORTS
std::vector<double> randp(size_t n, double scale, double shape = 1.0);
MATPLOT_EXPORTS
int randi(int imin, int imax);
MATPLOT_EXPORTS
std::vector<int> randi(size_t n, int imin, int imax);
MATPLOT_EXPORTS
double rand(double lower_bound, double upper_bound);
MATPLOT_EXPORTS
vector_1d rand(size_t n, double lower_bound, double upper_bound);
MATPLOT_EXPORTS
vector_2d rand(size_t rows, size_t cols, double lower_bound,
double upper_bound);
MATPLOT_EXPORTS
std::vector<double> reshape(const std::vector<std::vector<double>> &X);
MATPLOT_EXPORTS
std::vector<double> concat(const std::vector<double> &a,
const std::vector<double> &b);
template <class... Args>
std::vector<double> concat(const std::vector<double> &a,
const std::vector<double> &b, Args &&...args) {
std::vector<double> r = concat(a, b);
return concat(r, std::forward<Args>(args)...);
}
MATPLOT_EXPORTS
double truncate(double x, double lower_bound, double upper_bound);
template <class Arg1, class TUPLE>
void reorder_parameter_pack_in_tuple(TUPLE &t, Arg1 x) {
std::get<Arg1>(t) = x;
}
template <class Arg1, class... Args, class TUPLE>
void reorder_parameter_pack_in_tuple(TUPLE &t, Arg1 x, Args &&...args) {
std::get<Arg1>(t) = x;
reorder_parameter_pack_in_tuple(t, std::forward<Args>(args)...);
}
MATPLOT_EXPORTS
std::string fileread(const std::string &filename);
template <class T, class T2 = T, class FN = std::less<T>>
void rank_elements(T first, T last, T2 rank_input,
FN comp = std::less<T>()) {
using value_and_rank =
std::pair<std::remove_reference_t<decltype(*first)> const *,
size_t>;
std::vector<value_and_rank> v;
size_t r = 0;
while (first != last) {
v.emplace_back(&(*first), r);
++first;
++r;
}
std::sort(v.begin(), v.end(), [comp](const auto &a, const auto &b) {
return comp(*a.first, *b.first);
});
for (const auto &[ptr, ranking] : v) {
(void)ptr;
*rank_input = ranking;
++rank_input;
}
}
/// Cosine of argument in degreescollapse
MATPLOT_EXPORTS
double cosd(double degrees);
/// Sine of argument in degreescollapse
MATPLOT_EXPORTS
double sind(double degrees);
/// Sine of argument in degreescollapse
MATPLOT_EXPORTS
std::vector<double> deg2rad(const std::vector<double> &degrees);
MATPLOT_EXPORTS
double deg2rad(double rho);
/// Round up the maximum polar value
MATPLOT_EXPORTS
double round_polar_max(double polar_max);
MATPLOT_EXPORTS
double to_positive_radian(double radian);
/// Calculate the radians rho of a vector (u,v)
MATPLOT_EXPORTS
double vector_radians(double u, double v);
/// Calculate the magnitude theta of a vector (u,v)
MATPLOT_EXPORTS
double vector_magnitude(double u, double v);
/// Calculate the radians rho of a complex number u + iv
MATPLOT_EXPORTS
double vector_radians(std::complex<double> v);
/// Calculate the magnitude theta of a complex number u + iv
MATPLOT_EXPORTS
double vector_magnitude(std::complex<double> v);
/// Calculate cartesian coordinates of vector in polar coordinates
MATPLOT_EXPORTS
std::pair<double, double> pol2cart(double theta, double rho);
MATPLOT_EXPORTS
std::pair<vector_1d, vector_1d> pol2cart(vector_1d theta, vector_1d rho);
MATPLOT_EXPORTS
std::pair<vector_1d, vector_1d> pol2cart(vector_1d theta, double rho);
MATPLOT_EXPORTS
std::pair<double, double> elliptic2cart(double theta, double rho_w,
double rho_h);
MATPLOT_EXPORTS
std::pair<vector_1d, vector_1d> elliptic2cart(vector_1d theta, double rho_w,
double rho_h);
MATPLOT_EXPORTS
std::pair<vector_1d, vector_1d>
elliptic2cart(vector_1d theta, vector_1d rho_w, vector_1d rho_h);
MATPLOT_EXPORTS
std::pair<vector_2d, vector_2d> meshgrid(const vector_1d &x,
const vector_1d &y);
MATPLOT_EXPORTS
std::pair<vector_2d, vector_2d> meshgrid(const vector_1d &x_and_y);
MATPLOT_EXPORTS
vector_1d gradient(const vector_1d &z, double spacing = 1.0);
MATPLOT_EXPORTS
std::pair<vector_2d, vector_2d> gradient(const vector_2d &z,
double spacing = 1.0);
MATPLOT_EXPORTS
std::pair<vector_2d, vector_2d>
gradient(const vector_2d &z, double spacing_x, double spacing_y);
MATPLOT_EXPORTS
double peaks(double x, double y);
MATPLOT_EXPORTS
vector_2d peaks(const vector_2d &X, const vector_2d &Y);
MATPLOT_EXPORTS
std::tuple<vector_2d, vector_2d, vector_2d> peaks(size_t N = 49);
template <class T1, class T2> struct pair_hash {
std::size_t operator()(const std::pair<T1, T2> &p) const {
std::size_t h1 = std::hash<T1>()(p.first);
std::size_t h2 = std::hash<T2>()(p.second);
return h1 ^ h2;
}
};
template <class T> std::pair<size_t, size_t> size(const std::vector<T> &v) {
if (v.empty()) {
return std::make_pair(0, 0);
} else {
return std::make_pair(v.size(), v[0].size());
}
}
MATPLOT_EXPORTS
vector_2d zeros(size_t rows, size_t cols);
MATPLOT_EXPORTS
vector_2d ones(size_t rows, size_t cols);
using image_row_t = std::vector<unsigned char>;
using image_channel_t = std::vector<image_row_t>;
// The image might have 1 channel (B&W), 3 channels (RGB), or 4 channels
// (RGBA)
using image_channels_t = std::vector<image_channel_t>;
/// Core imread function
/// Return grayscale image (vector::size() == 1),
/// rgb image (vector::size() == 3),
/// rgba image (vector::size() == 4),
/// empty image (vector::size() == 0)
MATPLOT_EXPORTS
image_channels_t imread(const std::string &filename);
enum class image_interpolation {
raw,
additional_space,
nearest,
moving_average,
bilinear,
grid,
bicubic,
lanczos
};
MATPLOT_EXPORTS
image_channel_t rgb2gray(const image_channels_t &A);
MATPLOT_EXPORTS
image_channels_t gray2rgb(const image_channel_t &A,
const std::vector<std::vector<double>> &colormap);
MATPLOT_EXPORTS
image_channels_t gray2rgb(const image_channel_t &A);
MATPLOT_EXPORTS
image_channels_t gray2rgb(const image_channels_t &A,
const std::vector<std::vector<double>> &colormap);
MATPLOT_EXPORTS
image_channels_t gray2rgb(const image_channels_t &A);
MATPLOT_EXPORTS
image_channels_t
imresize(const image_channels_t &A, double scale,
image_interpolation m = image_interpolation::bicubic);
MATPLOT_EXPORTS
image_channels_t
imresize(const image_channels_t &A, size_t height, size_t width,
image_interpolation m = image_interpolation::bicubic);
MATPLOT_EXPORTS
void imwrite(const image_channels_t &A, const std::string &filename);
MATPLOT_EXPORTS
void imwrite(const image_channel_t &A,
const std::vector<std::vector<double>> &colormap,
const std::string &filename);
MATPLOT_EXPORTS
void imwrite(const image_channels_t &A, const std::string &filename);
MATPLOT_EXPORTS
image_channels_t imvignette(const image_channels_t &A,
double min_radius = 1., double exponent = 0.5);
template <class T = double> std::vector<std::vector<T>> eye(size_t n) {
std::vector<std::vector<T>> r(n, std::vector<T>(n, static_cast<T>(0)));
for (size_t i = 0; i < n; ++i) {
r[i][i] = 1.;
}
return r;
}
MATPLOT_EXPORTS
vector_2d transpose(const vector_2d &z);
MATPLOT_EXPORTS
std::vector<std::string>
tokenize(std::string_view text,
std::string_view delimiters = " ',\n\r\t\".!?:");
MATPLOT_EXPORTS
std::pair<std::vector<std::string>, std::vector<size_t>>
wordcount(const std::vector<std::string> &tokens,
const std::vector<std::string> &black_list,
size_t max_cloud_size = 100);
MATPLOT_EXPORTS
std::pair<std::vector<std::string>, std::vector<size_t>>
wordcount(std::string_view text, const std::vector<std::string> &black_list,
std::string_view delimiters = " ',\n\r\t\".!?:;",
size_t max_cloud_size = 100);
// Distance from x to the next larger floating point number
template <class FLOAT>
std::enable_if_t<std::is_same_v<FLOAT, float> ||
std::is_same_v<FLOAT, double> ||
std::is_same_v<FLOAT, long double>,
FLOAT>
eps(FLOAT x = 1.) {
constexpr long double max_long_double =
std::numeric_limits<long double>::max();
// std::nexttoward is more precise than std::nextafter
if constexpr (std::is_same_v<FLOAT, double>) {
return std::nexttoward(x, max_long_double) - x;
} else if constexpr (std::is_same_v<FLOAT, float>) {
return std::nexttowardf(x, max_long_double) - x;
} else if constexpr (std::is_same_v<FLOAT, long double>) {
return std::nexttowardl(x, max_long_double) - x;
} else {
throw std::logic_error(
"eps: FLOAT type needs to be float, double or long double");
}
}
template <class T>
std::vector<T> repmat(const std::vector<T> &a, size_t n) {
std::vector<T> b(a.size() * n);
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < a.size(); ++j) {
b[i * a.size() + j] = a[j];
}
}
return b;
}
struct ticks_results {
std::vector<double> ticks;
std::vector<std::string> tickLabels;
std::string scaleStr;
std::vector<double> minorTicks;
std::vector<double> overhang;
};
/// \brief Find ticks at "nice" intervals for an axis
/// For now, we only use our own ticks when we need to take control
/// over the gnuplot ticks. Sometimes the gnuplot ticks does not
/// give us the behaviour we expect. For instance, this is the case
/// when plotting parallel coordinates.
/// We could easily adapt class axis to always use this function
/// instead of the automatic gnuplot ticks but there's no need
/// for that at the moment.
/// The algorithm in this function is inspired by this matplot script:
/// https://www.mathworks.com/matlabcentral/fileexchange/30671-calcticks
/// We don't implement the version for log scale because, by coincidence,
/// the library does not need it at this point.
/// \param limits_min Minimum value
/// \param limits_max Maximum value
/// \param horizontal True if axis is horizontal (this changes the room for
/// labels) \param text_size Size in height or width of a char \param log
/// True if scale is logarithmic (this will throw an error for now) \return
/// Nice ticks and their labels in a ticks_results struct \see
/// https://www.mathworks.com/matlabcentral/fileexchange/30671-calcticks
MATPLOT_EXPORTS
ticks_results calcticks(double limits_min = -5, double limits_max = +5,
bool horizontal = false, double text_size = 1.25,
bool separateExp = true, bool log = false);
MATPLOT_EXPORTS
double distance(double x1, double y1, double x2, double y2);
/// \brief Simple read-only 2d view for vector_2d.
/// It could iterates over all vector's elements and get value using
/// only one index (offset).
class MATPLOT_EXPORTS vector_2d_view {
using vector_2d = matplot::vector_2d;
const vector_2d &_vec;
const std::size_t _sz;
/// \brief Helper method for determining the whole array size.
/// Required for caching inner vector's size.
std::size_t calculate_size(const vector_2d &vec) {
return std::accumulate(vec.begin(), vec.end(), (std::size_t)(0),
[](auto cnt, const auto &inner_vec) {
return cnt + inner_vec.size();
});
}
public:
static const double &get_element_from_offset(const vector_2d &vec,
std::size_t offset) {
std::size_t row_size = vec[0].size();
std::size_t cur_row = offset / row_size;
std::size_t cur_column = offset % row_size;
return vec[cur_row][cur_column];
}
static vector_2d_view from_vector_2d(const vector_2d &vec) {
return vector_2d_view(vec);
}
std::size_t size() const { return _sz; }
vector_2d_view(const vector_2d &vec)
: _vec(vec), _sz(calculate_size(vec)) {}
double operator()(std::size_t i, std::size_t j) {
return _vec.at(i).at(j);
}
friend class iterator;
class iterator {
vector_2d_view *const _vec;
std::size_t _row_offset;
std::size_t _col_offset;
static bool is_empty_iterator(const iterator &it) {
return it._vec == nullptr;
}
static bool is_end_iterator(const iterator &it) {
return is_empty_iterator(it) ||
it._row_offset * it._col_offset >= it._vec->size();
}
public:
iterator(vector_2d_view *const vec)
: _vec(vec), _row_offset(0), _col_offset(0) {}
bool operator==(const iterator &it) const {
return is_end_iterator(it)
? is_end_iterator(*this)
: it._vec == _vec && it._row_offset == _row_offset &&
it._col_offset == _col_offset;
}
auto operator*() const { return (*_vec)(_row_offset, _col_offset); }
iterator &operator++() {
_col_offset++;
if (_col_offset >= _vec->_vec.at(_row_offset).size()) {
_col_offset = 0;
_row_offset++;
}
return *this;
}
// iterator traits
using value_type = double;
};
iterator begin() { return iterator{this}; }
iterator end() { return iterator{nullptr}; }
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_COMMON_H

View File

@ -0,0 +1,134 @@
//
// Created by Alan Freitas on 2020-07-03.
//
#ifndef MATPLOTPLUSPLUS_CONCEPTS_H
#define MATPLOTPLUSPLUS_CONCEPTS_H
#include <matplot/util/handle_types.h>
#include <matplot/util/type_traits.h>
#include <string>
namespace matplot {
// https://github.com/Neargye/yacppl/blob/master/include/concepts.hpp
// Fallback to type T if Enable is not void
template <typename T, typename Enable = void> using type_concept = T;
// type_concept where Enable is void if C is false
template <typename T, bool C>
using TypeConcept = type_concept<T, typename std::enable_if_t<C>>;
// TypeConcept where C is true only if T is RValue
template <typename T>
using RValue = TypeConcept<
T, std::is_rvalue_reference<T>::value &&
!std::is_const<typename std::remove_reference<T>::type>::value>
&&;
// TypeConcept where C is true only if T is Const
template <typename T>
using Const = TypeConcept<
T, std::is_const<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is NotConst
template <typename T>
using NotConst = TypeConcept<
T, !std::is_const<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is Arithmetic
template <typename T>
using Arithmetic = TypeConcept<
T, std::is_arithmetic<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is Integral
template <typename T>
using Integral = TypeConcept<
T, std::is_integral<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is Pointer
template <typename T>
using Pointer = TypeConcept<
T, std::is_pointer<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is Trivial
template <typename T>
using Trivial = TypeConcept<
T, std::is_trivial<typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is TriviallyCopyable
template <typename T>
using TriviallyCopyable =
TypeConcept<T, std::is_trivially_copyable<
typename std::remove_reference<T>::type>::value>;
// TypeConcept where C is true only if T is String
template <typename T>
using String = TypeConcept<T, std::is_same_v<std::decay_t<T>, std::string>>;
// TypeConcept where C is true only if T is NotString
template <typename T>
using NotString =
TypeConcept<T, !std::is_same_v<std::decay_t<T>, std::string>>;
// TypeConcept where C is true only if T is NotString
template <typename T>
using NotStringConvertible =
TypeConcept<T, !std::is_convertible_v<std::decay_t<T>, std::string>>;
class figure_type;
// TypeConcept where C is true only if T is FigureHandle
template <typename T>
using FigureHandle = TypeConcept<
T, std::is_same_v<std::decay_t<T>, std::shared_ptr<class figure_type>>>;
// TypeConcept where C is true only if T is NotFigureHandle
template <typename T>
using NotFigureHandle =
TypeConcept<T, !std::is_same_v<std::decay_t<T>,
std::shared_ptr<class figure_type>>>;
// TypeConcept where C is true only if T is Iterable
template <typename T>
using Iterable = TypeConcept<T, is_iterable_v<std::decay_t<T>>>;
// TypeConcept where C is true only if T is IterableValues
template <typename T>
using IterableValues = TypeConcept<T, is_iterable_value_v<std::decay_t<T>>>;
// TypeConcept where C is true only if T is IterablePair
template <typename T>
using IterablePairs = TypeConcept<T, is_iterable_pair_v<std::decay_t<T>>>;
// TypeConcept where C is true only if T is IterableIterables
template <typename T>
using IterableIterables =
TypeConcept<T, is_iterable_iterable_v<std::decay_t<T>>>;
// TypeConcept where C is true only if T is IterableValues
template <typename T>
using NotAxesHandle =
TypeConcept<T, !std::is_same_v<std::decay_t<T>, axes_handle>>;
// TypeConcept where C is true only if T is an initializer list
template <typename T>
using InitializerList = TypeConcept<T, is_initializer_list<T>::value>;
// TypeConcept where C is true only if T is not an initializer list
template <typename T>
using NotInitializerList = TypeConcept<T, !is_initializer_list<T>::value>;
// TypeConcept where C is true only if T is a vector
template <typename T> using Vector = TypeConcept<T, is_vector<T>::value>;
// TypeConcept where C is true only if T is not a vector
template <typename T> using NotVector = TypeConcept<T, is_vector<T>::value>;
// TypeConcept where C is true only if T is a pair
template <typename T> using Pair = TypeConcept<T, is_pair<T>::value>;
// TypeConcept where C is true only if T is not a pair
template <typename T> using NotPair = TypeConcept<T, is_pair<T>::value>;
} // namespace matplot
#endif // MATPLOTPLUSPLUS_CONCEPTS_H

View File

@ -0,0 +1,622 @@
//
// Adapted from
// https://github.com/matplotlib/matplotlib/blob/master/src/_contour.h
// and
// https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/contour.py
//
#ifndef MATPLOTPLUSPLUS_CONTOURC_H
#define MATPLOTPLUSPLUS_CONTOURC_H
/*
* QuadContourGenerator
* --------------------
* A QuadContourGenerator generates contours for scalar fields defined on
* quadrilateral grids. A single QuadContourGenerator object can create both
* line contours (at single levels) and filled contours (between pairs of
* levels) for the same field.
*
* A field to be contoured has nx, ny points in the x- and y-directions
* respectively. The quad grid is defined by x and y arrays of shape(ny, nx),
* and the field itself is the z array also of shape(ny, nx). There is an
* optional boolean mask; if it exists then it also has shape(ny, nx). The
* mask applies to grid points rather than quads.
*
* How quads are masked based on the point mask is determined by the boolean
* 'corner_mask' flag. If false then any quad that has one or more of its four
* corner points masked is itself masked. If true the behaviour is the same
* except that any quad which has exactly one of its four corner points masked
* has only the triangular corner (half of the quad) adjacent to that point
* masked; the opposite triangular corner has three unmasked points and is not
* masked.
*
* By default the entire domain of nx*ny points is contoured together which can
* result in some very long polygons. The alternative is to break up the
* domain into subdomains or 'chunks' of smaller size, each of which is
* independently contoured. The size of these chunks is controlled by the
* 'nchunk' (or 'chunk_size') parameter. Chunking not only results in shorter
* polygons but also requires slightly less RAM. It can result in rendering
* artifacts though, depending on backend, antialiased flag and alpha value.
*
* Notation
* --------
* i and j are array indices in the x- and y-directions respectively. Although
* a single element of an array z can be accessed using z[j][i] or z(j,i), it
* is often convenient to use the single quad index z[quad], where
* quad = i + j*nx
* and hence
* i = quad % nx
* j = quad / nx
*
* Rather than referring to x- and y-directions, compass directions are used
* instead such that W, E, S, N refer to the -x, +x, -y, +y directions
* respectively. To move one quad to the E you would therefore add 1 to the
* quad index, to move one quad to the N you would add nx to the quad index.
*
* Cache
* -----
* Lots of information that is reused during contouring is stored as single
* bits in a mesh-sized cache, indexed by quad. Each quad's cache entry stores
* information about the quad itself such as if it is masked, and about the
* point at the SW corner of the quad, and about the W and S edges. Hence
* information about each point and each edge is only stored once in the cache.
*
* Cache information is divided into two types: that which is constant over the
* lifetime of the QuadContourGenerator, and that which changes for each
* contouring operation. The former is all grid-specific information such
* as quad and corner masks, and which edges are boundaries, either between
* masked and non-masked regions or between adjacent chunks. The latter
* includes whether points lie above or below the current contour levels, plus
* some flags to indicate how the contouring is progressing.
*
* Line Contours
* -------------
* A line contour connects points with the same z-value. Each point of such a
* contour occurs on an edge of the grid, at a point linearly interpolated to
* the contour z-level from the z-values at the end points of the edge. The
* direction of a line contour is such that higher values are to the left of
* the contour, so any edge that the contour passes through will have a left-
* hand end point with z > contour level and a right-hand end point with
* z <= contour level.
*
* Line contours are of two types. Firstly there are open line strips that
* start on a boundary, traverse the interior of the domain and end on a
* boundary. Secondly there are closed line loops that occur completely within
* the interior of the domain and do not touch a boundary.
*
* The QuadContourGenerator makes two sweeps through the grid to generate line
* contours for a particular level. In the first sweep it looks only for start
* points that occur on boundaries, and when it finds one it follows the
* contour through the interior until it finishes on another boundary edge.
* Each quad that is visited by the algorithm has a 'visited' flag set in the
* cache to indicate that the quad does not need to be visited again. In the
* second sweep all non-visited quads are checked to see if they contain part
* of an interior closed loop, and again each time one is found it is followed
* through the domain interior until it returns back to its start quad and is
* therefore completed.
*
* The situation is complicated by saddle quads that have two opposite corners
* with z >= contour level and the other two corners with z < contour level.
* These therefore contain two segments of a line contour, and the visited
* flags take account of this by only being set on the second visit. On the
* first visit a number of saddle flags are set in the cache to indicate which
* one of the two segments has been completed so far.
*
* Filled Contours
* ---------------
* Filled contours are produced between two contour levels and are always
* closed polygons. They can occur completely within the interior of the
* domain without touching a boundary, following either the lower or upper
* contour levels. Those on the lower level are exactly like interior line
* contours with higher values on the left. Those on the upper level are
* reversed such that higher values are on the right.
*
* Filled contours can also involve a boundary in which case they consist of
* one or more sections along a boundary and one or more sections through the
* interior. Interior sections can be on either level, and again those on the
* upper level have higher values on the right. Boundary sections can remain
* on either contour level or switch between the two.
*
* Once the start of a filled contour is found, the algorithm is similar to
* that for line contours in that it follows the contour to its end, which
* because filled contours are always closed polygons will be by returning
* back to the start. However, because two levels must be considered, each
* level has its own set of saddle and visited flags and indeed some extra
* visited flags for boundary edges.
*
* The major complication for filled contours is that some polygons can be
* holes (with points ordered clockwise) within other polygons (with points
* ordered anticlockwise). When it comes to rendering filled contours each
* non-hole polygon must be rendered along with its zero or more contained
* holes or the rendering will not be correct. The filled contour finding
* algorithm could progress pretty much as the line contour algorithm does,
* taking each polygon as it is found, but then at the end there would have to
* be an extra step to identify the parent non-hole polygon for each hole.
* This is not a particularly onerous task but it does not scale well and can
* easily dominate the execution time of the contour finding for even modest
* problems. It is much better to identity each hole's parent non-hole during
* the sweep algorithm.
*
* This requirement dictates the order that filled contours are identified. As
* the algorithm sweeps up through the grid, every time a polygon passes
* through a quad a ParentCache object is updated with the new possible parent.
* When a new hole polygon is started, the ParentCache is used to find the
* first possible parent in the same quad or to the S of it. Great care is
* needed each time a new quad is checked to see if a new polygon should be
* started, as a single quad can have multiple polygon starts, e.g. a quad
* could be a saddle quad for both lower and upper contour levels, meaning it
* has four contour line segments passing through it which could all be from
* different polygons. The S-most polygon must be started first, then the next
* S-most and so on until the N-most polygon is started in that quad.
*/
// #include "numpy_cpp.h"
// https://github.com/matplotlib/matplotlib/blob/master/src/numpy_cpp.h
#include <matplot/detail/config.h>
#include <matplot/core/axes_type.h>
#include <matplot/util/common.h>
#include <matplot/util/handle_types.h>
#include <array>
#include <cmath>
#include <iostream>
#include <list>
#include <numeric>
#include <stdint.h>
#include <vector>
namespace matplot {
// Edge of a quad including diagonal edges of masked quads if _corner_mask
// true.
enum class Edge {
// Listing values here so easier to check for debug purposes.
Edge_None = -1,
Edge_E = 0,
Edge_N = 1,
Edge_W = 2,
Edge_S = 3,
// The following are only used if _corner_mask is true.
Edge_NE = 4,
Edge_NW = 5,
Edge_SW = 6,
Edge_SE = 7
};
// Combination of a quad and an edge of that quad.
// An invalid quad edge has quad of -1.
struct MATPLOT_EXPORTS QuadEdge {
QuadEdge();
QuadEdge(long quad_, Edge edge_);
bool operator<(const QuadEdge &other) const;
bool operator==(const QuadEdge &other) const;
bool operator!=(const QuadEdge &other) const;
friend std::ostream &operator<<(std::ostream &os,
const QuadEdge &quad_edge);
long quad;
Edge edge;
};
// 2D point with x,y coordinates.
struct MATPLOT_EXPORTS XY {
XY();
XY(const double &x_, const double &y_);
bool operator==(const XY &other) const;
bool operator!=(const XY &other) const;
XY operator*(const double &multiplier) const;
const XY &operator+=(const XY &other);
const XY &operator-=(const XY &other);
XY operator+(const XY &other) const;
XY operator-(const XY &other) const;
friend std::ostream &operator<<(std::ostream &os, const XY &xy);
double x, y;
};
// A single line of a contour, which may be a closed line loop or an open
// line strip. Identical adjacent points are avoided using push_back(). A
// ContourLine is either a hole (points ordered clockwise) or it is not
// (points ordered anticlockwise). Each hole has a parent ContourLine that
// is not a hole; each non-hole contains zero or more child holes. A
// non-hole and its child holes must be rendered together to obtain the
// correct results.
class MATPLOT_EXPORTS ContourLine : public std::vector<XY> {
public:
typedef std::list<ContourLine *> Children;
ContourLine(bool is_hole);
void add_child(ContourLine *child);
void clear_parent();
const Children &get_children() const;
const ContourLine *get_parent() const;
ContourLine *get_parent();
bool is_hole() const;
void push_back(const XY &point);
void set_parent(ContourLine *parent);
void write() const;
private:
bool _is_hole;
ContourLine *_parent; // Only set if is_hole, not owned.
Children _children; // Only set if !is_hole, not owned.
};
// A Contour is a collection of zero or more ContourLines.
class MATPLOT_EXPORTS Contour : public std::vector<ContourLine *> {
public:
Contour();
virtual ~Contour();
void delete_contour_lines();
void write() const;
};
// Single chunk of ContourLine parents, indexed by quad. As a chunk's
// filled contours are created, the ParentCache is updated each time a
// ContourLine passes through each quad. When a new ContourLine is created,
// if it is a hole its parent ContourLine is read from the ParentCache by
// looking at the start quad, then each quad to the S in turn until a
// non-zero ContourLine is found.
class MATPLOT_EXPORTS ParentCache {
public:
ParentCache() = default;
ParentCache(long nx, long x_chunk_points, long y_chunk_points);
ContourLine *get_parent(long quad);
void set_chunk_starts(long istart, long jstart);
void set_parent(long quad, ContourLine &contour_line);
private:
long quad_to_index(long quad) const;
long _nx;
long _x_chunk_points, _y_chunk_points; // Number of points not quads.
std::vector<ContourLine *> _lines; // Not owned.
long _istart, _jstart;
};
// See overview of algorithm at top of file.
class MATPLOT_EXPORTS QuadContourGenerator {
public:
// using CoordinateArray = numpy::array_view<const double, 2>;
using CoordinateArray = vector_2d;
// using MaskArray = numpy::array_view<const bool, 2>;
using MaskArray = std::array<const bool, 2>;
// This constructor is just a placeholder
// This object will obviously not work
QuadContourGenerator() = default;
// Constructor with optional mask.
// x, y, z: double arrays of shape (ny,nx).
// mask: boolean array, ether empty (if no mask), or of shape (ny,nx).
// corner_mask: flag for different masking behaviour.
// chunk_size: 0 for no chunking, or +ve integer for size of chunks
// that
// the domain is subdivided into.
// https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/contour.py
QuadContourGenerator(const vector_2d &x, const vector_2d &y,
const vector_2d &z, bool corner_mask,
long chunk_size);
// Create and return polygons for a line (i.e. non-filled) contour at
// the specified level.
using vertices_list_type = std::pair<vector_1d, vector_1d>;
vertices_list_type create_contour(const double &level);
// Create and return polygons for a filled contour between the two
// specified levels.
using codes_list_type = std::vector<unsigned char>;
std::pair<vertices_list_type, codes_list_type>
create_filled_contour(const double &lower_level,
const double &upper_level);
private:
// Typedef for following either a boundary of the domain or the
// interior; clearer than using a boolean.
enum class BoundaryOrInterior { Boundary, Interior };
// Typedef for direction of movement from one quad to the next.
enum class Dir { Dir_Right = -1, Dir_Straight = 0, Dir_Left = +1 };
// Typedef for a polygon being a hole or not; clearer than using a
// boolean.
enum class HoleOrNot { NotHole, Hole };
// Append a C++ ContourLine to the end of a python list. Used for line
// contours where each ContourLine is converted to a separate numpy
// array of (x,y) points. Clears the ContourLine too.
void append_contour_line_to_vertices(
ContourLine &contour_line, vertices_list_type &vertices_list) const;
// Append a C++ Contour to the end of two python lists. Used for filled
// contours where each non-hole ContourLine and its child holes are
// represented by a numpy array of (x,y) points and a second numpy array
// of 'kinds' or 'codes' that indicates where the points array is split
// into individual polygons. Clears the Contour too, freeing each
// ContourLine as soon as possible for minimum RAM usage.
void
append_contour_to_vertices_and_codes(Contour &contour,
vertices_list_type &vertices_list,
codes_list_type &codes_list) const;
// Return number of chunks that fit in the specified point_count.
long calc_chunk_count(long point_count) const;
// Return the point on the specified QuadEdge that intersects the
// specified level.
XY edge_interp(const QuadEdge &quad_edge, const double &level);
// Follow a contour along a boundary, appending points to the
// ContourLine as it progresses. Only called for filled contours. Stops
// when the contour leaves the boundary to move into the interior of the
// domain, or when the start_quad_edge is reached in which case the
// ContourLine is a completed closed loop. Always adds the end point of
// each boundary edge to the ContourLine, regardless of whether moving
// to another boundary edge or leaving the boundary into the interior.
// Never adds the start point of the first boundary edge to the
// ContourLine.
// contour_line: ContourLine to append points to.
// quad_edge: on entry the QuadEdge to start from, on exit the
// QuadEdge
// that is stopped on.
// lower_level: lower contour z-value.
// upper_level: upper contour z-value.
// level_index: level index started on (1 = lower, 2 = upper level).
// start_quad_edge: QuadEdge that the ContourLine started from, which
// is
// used to check if the ContourLine is finished.
// Returns the end level_index.
unsigned int follow_boundary(ContourLine &contour_line,
QuadEdge &quad_edge,
const double &lower_level,
const double &upper_level,
unsigned int level_index,
const QuadEdge &start_quad_edge);
// Follow a contour across the interior of the domain, appending points
// to the ContourLine as it progresses. Called for both line and filled
// contours. Stops when the contour reaches a boundary or, if the
// start_quad_edge is specified, when quad_edge == start_quad_edge and
// level_index == start_level_index. Always adds the end point of each
// quad traversed to the ContourLine; only adds the start point of the
// first quad if want_initial_point flag is true.
// contour_line: ContourLine to append points to.
// quad_edge: on entry the QuadEdge to start from, on exit the
// QuadEdge
// that is stopped on.
// level_index: level index started on (1 = lower, 2 = upper level).
// level: contour z-value.
// want_initial_point: whether want to append the initial point to the
// ContourLine or not.
// start_quad_edge: the QuadEdge that the ContourLine started from to
// check if the ContourLine is finished, or 0 if no check should
// occur.
// start_level_index: the level_index that the ContourLine started
// from. set_parents: whether should set ParentCache as it progresses
// or not.
// This is true for filled contours, false for line contours.
void follow_interior(ContourLine &contour_line, QuadEdge &quad_edge,
unsigned int level_index, const double &level,
bool want_initial_point,
const QuadEdge *start_quad_edge,
unsigned int start_level_index, bool set_parents);
// Return the index limits of a particular chunk.
void get_chunk_limits(long ijchunk, long &ichunk, long &jchunk,
long &istart, long &iend, long &jstart,
long &jend);
// Check if a contour starts within the specified corner quad on the
// specified level_index, and if so return the start edge. Otherwise
// return Edge_None.
Edge get_corner_start_edge(long quad, unsigned int level_index) const;
// Return index of point at start or end of specified QuadEdge, assuming
// anticlockwise ordering around non-masked quads.
long get_edge_point_index(const QuadEdge &quad_edge, bool start) const;
// Return the edge to exit a quad from, given the specified entry
// quad_edge and direction to move in.
Edge get_exit_edge(const QuadEdge &quad_edge, Dir dir) const;
// Return the (x,y) coordinates of the specified point index.
XY get_point_xy(long point) const;
// Return the z-value of the specified point index.
const double &get_point_z(long point) const;
// Check if a contour starts within the specified non-corner quad on the
// specified level_index, and if so return the start edge. Otherwise
// return Edge_None.
Edge get_quad_start_edge(long quad, unsigned int level_index) const;
// Check if a contour starts within the specified quad, whether it is a
// corner or a full quad, and if so return the start edge. Otherwise
// return Edge_None.
Edge get_start_edge(long quad, unsigned int level_index) const;
// Initialise the cache to contain grid information that is constant
// across the lifetime of this object, i.e. does not vary between calls
// to create_contour() and create_filled_contour().
void init_cache_grid();
// Initialise the cache with information that is specific to contouring
// the specified two levels. The levels are the same for contour lines,
// different for filled contours.
void init_cache_levels(const double &lower_level,
const double &upper_level);
// Return the (x,y) point at which the level intersects the line
// connecting the two specified point indices.
XY interp(long point1, long point2, const double &level) const;
// Return true if the specified QuadEdge is a boundary, i.e. is either
// an edge between a masked and non-masked quad/corner or is a chunk
// boundary.
bool is_edge_a_boundary(const QuadEdge &quad_edge) const;
// Follow a boundary from one QuadEdge to the next in an anticlockwise
// manner around the non-masked region.
void move_to_next_boundary_edge(QuadEdge &quad_edge) const;
// Move from the quad specified by quad_edge.quad to the neighbouring
// quad by crossing the edge specified by quad_edge.edge.
void move_to_next_quad(QuadEdge &quad_edge) const;
// Check for filled contours starting within the specified quad and
// complete any that are found, appending them to the specified Contour.
void single_quad_filled(Contour &contour, long quad,
const double &lower_level,
const double &upper_level);
// Start and complete a filled contour line.
// quad: index of quad to start ContourLine in.
// edge: edge of quad to start ContourLine from.
// start_level_index: the level_index that the ContourLine starts
// from. hole_or_not: whether the ContourLine is a hole or not.
// boundary_or_interior: whether the ContourLine starts on a boundary
// or
// the interior.
// lower_level: lower contour z-value.
// upper_level: upper contour z-value.
// Returns newly created ContourLine.
ContourLine *start_filled(long quad, Edge edge,
unsigned int start_level_index,
HoleOrNot hole_or_not,
BoundaryOrInterior boundary_or_interior,
const double &lower_level,
const double &upper_level);
// Start and complete a line contour that both starts and end on a
// boundary, traversing the interior of the domain.
// vertices_list: Python list that the ContourLine should be appended
// to. quad: index of quad to start ContourLine in. edge: boundary
// edge to start ContourLine from. level: contour z-value.
// Returns true if the start quad does not need to be visited again,
// i.e. VISITED(quad,1).
bool start_line(vertices_list_type &vertices_list, long quad, Edge edge,
const double &level);
// Debug function that writes the cache status to stdout.
void write_cache(bool grid_only = false) const;
// Debug function that writes that cache status for a single quad to
// stdout.
void write_cache_quad(long quad, bool grid_only) const;
// Note that mask is not stored as once it has been used to initialise
// the cache it is no longer needed.
CoordinateArray _x, _y, _z;
long _nx, _ny; // Number of points in each direction.
long _n; // Total number of points (and hence quads).
bool _corner_mask;
long _chunk_size; // Number of quads per chunk (not points).
// Always > 0, unlike python nchunk which is 0
// for no chunking.
long _nxchunk, _nychunk; // Number of chunks in each direction.
long _chunk_count; // Total number of chunks.
typedef uint32_t CacheItem;
std::vector<CacheItem> _cache;
ParentCache _parent_cache; // On W quad sides.
};
/// Segments are considered as including their end-points; i.e if the
// closest point on the path is a node in *xys* with index *i*,
// this
// returns ``(i-1, i)``. For the special case where *xys* is a
// single
// point, this returns ``(0, 0)``.
/// \param xys Coordinates of vertices
/// \param p Coordinates of point
/// \return Minimum square distance of *p* to *xys*.
/// \return Projection of *p* onto *xys*.
/// \return Consecutive indices of vertices of segment in *xys* where
/// *proj* is.
MATPLOT_EXPORTS
std::tuple<double, std::pair<double, double>, std::pair<size_t, size_t>>
find_closest_point_on_path(const std::vector<double> &xs,
const std::vector<double> &ys, double px,
double py);
/// \brief Compute contour lines
///
/// This will use a square tracing algorithm to find the contour points
/// of a contour line. We look for level transitions on every
/// grid quadrant and determine the specific point with an interpolation
/// that considers how far the the points in the quadrant are for the
/// contour level.
///
/// We compute these lines outside gnuplot because creating contour lines
/// in 2d plots (with the "plot" command) in gnuplot involves so many
/// work-arounds that it is just not worth it.
///
/// \see
/// https://en.wikipedia.org/wiki/Boundary_tracing#Square_tracing_algorithm
/// \see
/// http://www.batesville.k12.in.us/physics/CalcNet/grapher/how_it_works.htm
/// \see http://dx.doi.org/10.1093/comjnl/33.5.402
/// \see http://dx.doi.org/10.1016/0097-8493%2891%2990002-Y
/// \see http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=576861
/// \see https://github.com/matplotlib/matplotlib/blob/master/src/_contour.h
using contour_line_type = std::pair<vector_1d, vector_1d>;
MATPLOT_EXPORTS
contour_line_type contour_line(const vector_2d &x, const vector_2d &y,
const vector_2d &z, double level);
MATPLOT_EXPORTS
std::vector<contour_line_type> contourc(const vector_2d &x,
const vector_2d &y,
const vector_2d &z,
const vector_1d &levels);
MATPLOT_EXPORTS
std::vector<contour_line_type> contourc(const vector_2d &x,
const vector_2d &y,
const vector_2d &z,
size_t n_levels = 7);
MATPLOT_EXPORTS
std::vector<contour_line_type> contourc(const vector_2d &z,
const vector_1d &levels);
MATPLOT_EXPORTS
std::vector<contour_line_type> contourc(const vector_2d &z,
size_t n_levels = 7);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_CONTOURC_H

View File

@ -0,0 +1,51 @@
//
// Created by Alan Freitas on 20/07/20.
//
#ifndef MATPLOTPLUSPLUS_GEODATA_H
#define MATPLOTPLUSPLUS_GEODATA_H
#include <matplot/detail/config.h>
#include <string>
#include <vector>
namespace matplot {
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>> &world_map_10m();
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>> &world_map_50m();
MATPLOT_EXPORTS
std::pair<std::vector<double>, std::vector<double>> &world_map_110m();
MATPLOT_EXPORTS
std::tuple<std::vector<double>, std::vector<double>,
std::vector<std::string>> &
world_cities();
MATPLOT_EXPORTS
std::tuple<std::vector<double>, std::vector<double>,
std::vector<std::string>>
world_cities(double min_x_distance_per_char, double min_y_distance);
MATPLOT_EXPORTS
std::tuple<std::vector<double>, std::vector<double>>
greedy_tsp(const std::vector<double> &x, const std::vector<double> &y,
size_t starting_city = 0);
MATPLOT_EXPORTS
std::tuple<std::vector<double>, std::vector<double>, std::vector<size_t>>
greedy_tsp_with_idx(const std::vector<double> &x,
const std::vector<double> &y, size_t starting_city = 0);
MATPLOT_EXPORTS
std::tuple<std::vector<double>, std::vector<double>,
std::vector<std::string>>
clear_overlapping_labels(const std::vector<double> &x,
const std::vector<double> &y,
const std::vector<std::string> &names,
double min_x_distance_per_char,
double min_y_distance);
} // namespace matplot
#endif // MATPLOTPLUSPLUS_GEODATA_H

View File

@ -0,0 +1,93 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_HANDLE_TYPES_H
#define MATPLOTPLUSPLUS_HANDLE_TYPES_H
#include <array>
#include <memory>
namespace matplot {
using color_array = std::array<float, 4>;
class figure_type;
using figure_handle = std::shared_ptr<class figure_type>;
class axes_type;
using axes_handle = std::shared_ptr<class axes_type>;
class axes_object;
using axes_object_handle = std::shared_ptr<class axes_object>;
class legend;
using legend_handle = std::shared_ptr<class legend>;
class string_function;
using string_function_handle = std::shared_ptr<class string_function>;
class line;
using line_handle = std::shared_ptr<class line>;
using scatter_handle = std::shared_ptr<class line>;
class stair;
using stair_handle = std::shared_ptr<class stair>;
class error_bar;
using error_bar_handle = std::shared_ptr<class error_bar>;
class filled_area;
using filled_area_handle = std::shared_ptr<class filled_area>;
class function_line;
using function_line_handle = std::shared_ptr<class function_line>;
class histogram;
using histogram_handle = std::shared_ptr<class histogram>;
class box_chart;
using box_chart_handle = std::shared_ptr<class box_chart>;
class parallel_lines;
using parallel_lines_handle = std::shared_ptr<class parallel_lines>;
class circles;
using circles_handle = std::shared_ptr<class circles>;
class labels;
using labels_handle = std::shared_ptr<class labels>;
class matrix;
using matrix_handle = std::shared_ptr<class matrix>;
class bars;
using bars_handle = std::shared_ptr<class bars>;
class vectors;
using vectors_handle = std::shared_ptr<class vectors>;
class contours;
using contours_handle = std::shared_ptr<class contours>;
class surface;
using surface_handle = std::shared_ptr<class surface>;
class network;
using network_handle = std::shared_ptr<class network>;
/// Bin scatter style
enum class bin_scatter_style {
automatic, // decide automatically depending on the data
point_size, // size proportional to values in the bin
point_alpha, // number of elements in bin represented by colormap where
// alpha varies with density
jitter, // create a number of points in the bin proportional to the bin
// value
point_colormap, // number of elements in bin represented by default
// colormap
heatmap // number of elements in each bin represented by a heatmap
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_HANDLE_TYPES_H

View File

@ -0,0 +1,42 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_KEYWORDS_H
#define MATPLOTPLUSPLUS_KEYWORDS_H
#include <limits>
namespace matplot {
class keyword_automatic_type {};
constexpr keyword_automatic_type automatic;
class keyword_manual_type {};
constexpr keyword_manual_type manual;
class keyword_equal_type {};
constexpr keyword_equal_type equal;
class keyword_square_type {};
constexpr keyword_square_type square;
class keyword_tight_type {};
constexpr keyword_tight_type tight;
class keyword_ij_type {};
constexpr keyword_ij_type ij;
class keyword_minor_type {};
constexpr keyword_minor_type minor;
constexpr bool on = true;
constexpr bool off = false;
constexpr bool left = false;
constexpr bool right = true;
constexpr double inf = std::numeric_limits<double>::infinity();
} // namespace matplot
#endif // MATPLOTPLUSPLUS_KEYWORDS_H

View File

@ -0,0 +1,95 @@
//
// Created by Alan Freitas on 2020-07-06.
//
#ifndef MATPLOTPLUSPLUS_POPEN_H
#define MATPLOTPLUSPLUS_POPEN_H
#include <string>
#include <string_view>
#include <cstdio> // FILE
#ifdef _WIN32
#include <windows.h> // HANDLE
/// State of a child process pipe
class proc_pipe
{
protected:
proc_pipe() = default;
HANDLE hProcess = 0; ///< WIN32 process handle
HANDLE hThread = 0; ///< WIN32 thread handle
FILE *file_ = nullptr; ///< C file handle for I/O (not both)
};
#elif defined(__linux) || defined(__APPLE__)
#include <unistd.h> // pid_t
/// State of a child process pipe
class proc_pipe
{
protected:
proc_pipe() = default;
pid_t pid = 0; ///< POSIX process identifier
FILE *file_ = nullptr; ///< C file handle for input or output (not both)
};
#else
#error "proc_pipe is not implemented for this platform"
#endif // platform specific code
/// Common operations for a child process pipe
class common_pipe : public proc_pipe
{
public:
FILE *file() const { return file_; }
int close(int *exit_code = nullptr);
bool opened() const { return file_ != nullptr; }
const std::string& error() const { return error_; }
bool exceptions() const { return exceptions_; }
void exceptions(bool exc) { exceptions_ = exc; }
protected:
common_pipe() = default;
common_pipe(const common_pipe&) = delete;
common_pipe& operator=(const common_pipe&) = delete;
common_pipe(common_pipe&&) noexcept = default;
common_pipe& operator=(common_pipe&&) noexcept = default;
~common_pipe() noexcept {
if (opened())
close();
}
bool exceptions_ = false;
std::string error_{};
int report(int err, const std::string& what);
int open(const std::string &command, char mode);
};
/// Pipe to read from process output
class ipipe : public common_pipe
{
public:
ipipe();
int open(const std::string &cmd) { return common_pipe::open(cmd, 'r'); }
int read(std::string &data);
};
/// Pipe to write into process input
class opipe : public common_pipe
{
public:
opipe();
int open(const std::string &cmd) { return common_pipe::open(cmd, 'w'); }
int write(std::string_view data);
int flush(std::string_view data = {});
};
/// Runs the shell command, writes data to its input and waits for completion, returns errno if failed
int shell_write(const std::string &command, std::string_view data = {});
/// Runs the shell command, reads data from its output and waits for completion, returns errno if failed
int shell_read(const std::string &command, std::string& data);
#endif // MATPLOTPLUSPLUS_POPEN_H

View File

@ -0,0 +1,150 @@
//
// Created by Alan Freitas on 2020-07-05.
//
#ifndef MATPLOTPLUSPLUS_TYPE_TRAITS_H
#define MATPLOTPLUSPLUS_TYPE_TRAITS_H
#include <string>
#include <type_traits>
#include <vector>
namespace matplot {
template <typename C> struct is_iterable {
typedef long false_type;
typedef char true_type;
template <class T> static false_type check(...);
template <class T>
static true_type check(int, typename T::const_iterator = C().end());
enum { value = sizeof(check<C>(0)) == sizeof(true_type) };
};
template <typename C> constexpr bool is_iterable_v = is_iterable<C>::value;
template <typename C> struct has_value_type {
typedef long false_type;
typedef char true_type;
template <class T> static false_type check(...);
template <class T>
static true_type check(int, typename T::value_type = *C().begin());
enum { value = sizeof(check<C>(0)) == sizeof(true_type) };
};
template <typename C>
constexpr bool has_value_type_v = has_value_type<C>::value;
template <typename C> struct has_iterable_value_type {
typedef long false_type;
typedef char true_type;
template <class T> static false_type check(...);
template <class T>
static true_type
check(int,
typename T::value_type::value_type = *(C().begin()->begin()));
enum { value = sizeof(check<C>(0)) == sizeof(true_type) };
};
template <typename C>
constexpr bool has_iterable_value_type_v =
has_iterable_value_type<C>::value;
// Something like std::vector<double>
template <class C>
struct is_iterable_value
: public std::integral_constant<
bool, is_iterable_v<C> && !has_iterable_value_type_v<C>> {};
template <typename C>
constexpr bool is_iterable_value_v = is_iterable_value<C>::value;
// Something like std::vector<std::vector<double>>
template <class C>
struct is_iterable_iterable
: public std::integral_constant<
bool, is_iterable_v<C> && has_iterable_value_type_v<C>> {};
template <typename C>
constexpr bool is_iterable_iterable_v = is_iterable_iterable<C>::value;
template <class T>
using is_string =
std::integral_constant<bool,
std::is_same_v<std::decay_t<T>, std::string> &&
std::is_convertible_v<T, std::string>>;
template <typename C> constexpr bool is_string_v = is_string<C>::value;
template <typename> struct is_pair : std::false_type {};
template <typename T, typename U>
struct is_pair<std::pair<T, U>> : std::true_type {};
template <typename T> constexpr bool is_pair_v = is_pair<T>::value;
template <class C>
struct is_iterable_pair
: public std::integral_constant<
bool, is_iterable_v<C> && !has_iterable_value_type_v<C> &&
is_pair_v<typename C::value_type>> {};
template <typename C>
constexpr bool is_iterable_pair_v = is_iterable_pair<C>::value;
template <typename> struct is_vector : std::false_type {};
template <typename T, typename U>
struct is_vector<std::vector<T, U>> : std::true_type {};
template <typename> struct is_initializer_list : std::false_type {};
template <typename T>
struct is_initializer_list<std::initializer_list<T>> : std::true_type {};
template <typename T> struct first_type_if_pair { using type = T; };
template <typename T, typename U>
struct first_type_if_pair<std::pair<T, U>> {
using type = T;
};
// also tried this, but it didn't help
template <typename T, typename U>
struct first_type_if_pair<std::pair<const T, U>> {
using type = T;
};
template <typename T> struct second_type_if_pair { using type = T; };
template <typename T, typename U>
struct second_type_if_pair<std::pair<T, U>> {
using type = U;
};
// also tried this, but it didn't help
template <typename T, typename U>
struct second_type_if_pair<std::pair<const T, U>> {
using type = U;
};
template <typename ITERABLE> struct iterable_traits {
using container_type = ITERABLE;
using iterator_type = decltype(std::declval<container_type>().begin());
using value_type = typename std::remove_reference<decltype(
std::declval<iterator_type>().operator*())>::type;
static constexpr bool is_map = is_pair<value_type>::value;
using key_type =
std::conditional_t<is_map, typename value_type::first_type,
value_type>;
using mapped_type =
std::conditional_t<is_map, typename value_type::second_type,
value_type>;
};
} // namespace matplot
#endif // MATPLOTPLUSPLUS_TYPE_TRAITS_H

View File

@ -0,0 +1,52 @@
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was Matplot++Config.cmake.in ########
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
macro(set_and_check _var _file)
set(${_var} "${_file}")
if(NOT EXISTS "${_file}")
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
endif()
endmacro()
macro(check_required_components _NAME)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(NOT ${_NAME}_${comp}_FOUND)
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
endif()
endif()
endforeach()
endmacro()
####################################################################################
# How this Matplot++ installation was built
set(MATPLOT_BUILT_SHARED "ON")
set(MATPLOT_BUILT_CXX_COMPILER_ID "GNU")
set(MATPLOT_BUILT_CXX_COMPILER_VERSION "11.4.0")
# Check if it matches the current toolchain
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL MATPLOT_BUILT_CXX_COMPILER_ID)
message(WARNING "This installation of Matplot++ was built with ${MATPLOT_BUILT_CXX_COMPILER_ID}.")
endif()
# Find dependencies
if(NOT ${MATPLOT_BUILT_SHARED})
include(CMakeFindDependencyMacro)
list(APPEND CMAKE_MODULE_PATH ${MATPLOT_CONFIG_INSTALL_DIR})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
# OpenGL backend
if (OFF)
find_dependency(glad)
find_dependency(glfw3)
endif()
list(POP_BACK CMAKE_MODULE_PATH)
endif()
# Create imported targets
include("${CMAKE_CURRENT_LIST_DIR}/Matplot++Targets.cmake")
check_required_components(Matplot++)

View File

@ -0,0 +1,70 @@
# This is a basic version file for the Config-mode of find_package().
# It is used by write_basic_package_version_file() as input file for configure_file()
# to create a version-file which can be installed along a config.cmake file.
#
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
# the requested version string are exactly the same and it sets
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
# but only if the requested major version is the same as the current one.
# The variable CVF_VERSION must be set before calling configure_file().
set(PACKAGE_VERSION "1.2.0")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if("1.2.0" MATCHES "^([0-9]+)\\.")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
endif()
else()
set(CVF_VERSION_MAJOR "1.2.0")
endif()
if(PACKAGE_FIND_VERSION_RANGE)
# both endpoints of the range must have the expected major version
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
set(PACKAGE_VERSION_COMPATIBLE FALSE)
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
endif()
# if the installed project requested no architecture check, don't perform the check
if("FALSE")
return()
endif()
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
return()
endif()
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
math(EXPR installedBits "8 * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()

View File

@ -0,0 +1,19 @@
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Release".
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Import target "Matplot++::matplot" for configuration "Release"
set_property(TARGET Matplot++::matplot APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(Matplot++::matplot PROPERTIES
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libmatplot.so.1.2.0"
IMPORTED_SONAME_RELEASE "libmatplot.so.1"
)
list(APPEND _IMPORT_CHECK_TARGETS Matplot++::matplot )
list(APPEND _IMPORT_CHECK_FILES_FOR_Matplot++::matplot "${_IMPORT_PREFIX}/lib/libmatplot.so.1.2.0" )
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)

View File

@ -0,0 +1,96 @@
# Generated by CMake
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
message(FATAL_ERROR "CMake >= 2.6.0 required")
endif()
cmake_policy(PUSH)
cmake_policy(VERSION 2.6...3.20)
#----------------------------------------------------------------
# Generated CMake target import file.
#----------------------------------------------------------------
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_targetsDefined)
set(_targetsNotDefined)
set(_expectedTargets)
foreach(_expectedTarget Matplot++::matplot)
list(APPEND _expectedTargets ${_expectedTarget})
if(NOT TARGET ${_expectedTarget})
list(APPEND _targetsNotDefined ${_expectedTarget})
endif()
if(TARGET ${_expectedTarget})
list(APPEND _targetsDefined ${_expectedTarget})
endif()
endforeach()
if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
unset(_targetsDefined)
unset(_targetsNotDefined)
unset(_expectedTargets)
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)
return()
endif()
if(NOT "${_targetsDefined}" STREQUAL "")
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
endif()
unset(_targetsDefined)
unset(_targetsNotDefined)
unset(_expectedTargets)
# Compute the installation prefix relative to this file.
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if(_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif()
# Create imported target Matplot++::matplot
add_library(Matplot++::matplot SHARED IMPORTED)
set_target_properties(Matplot++::matplot PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "NOMINMAX;MATPLOT_BUILD_HIGH_RESOLUTION_WORLD_MAP"
INTERFACE_COMPILE_FEATURES "cxx_std_17"
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)
# Load information for each installed configuration.
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
file(GLOB CONFIG_FILES "${_DIR}/Matplot++Targets-*.cmake")
foreach(f ${CONFIG_FILES})
include(${f})
endforeach()
# Cleanup temporary variables.
set(_IMPORT_PREFIX)
# Loop over all imported files and verify that they actually exist
foreach(target ${_IMPORT_CHECK_TARGETS} )
foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
if(NOT EXISTS "${file}" )
message(FATAL_ERROR "The imported target \"${target}\" references the file
\"${file}\"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
\"${CMAKE_CURRENT_LIST_FILE}\"
but not all the files it references.
")
endif()
endforeach()
unset(_IMPORT_CHECK_FILES_FOR_${target})
endforeach()
unset(_IMPORT_CHECK_TARGETS)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)
cmake_policy(POP)

View File

@ -0,0 +1 @@
libmatplot.so.1

View File

@ -0,0 +1 @@
libmatplot.so.1.2.0

View File

@ -229,7 +229,6 @@
</worldbody> </worldbody>
<!-- 关节空间 PD 位置控制ctrl = 目标关节角度 (rad) -->
<actuator> <actuator>
<!-- 左臂:位置控制 --> <!-- 左臂:位置控制 -->
<position name="L_SHOULDER_P_pos" joint="L_SHOULDER_P" <position name="L_SHOULDER_P_pos" joint="L_SHOULDER_P"

View File

@ -32,5 +32,6 @@ third_party/opencv/4.13.0
third_party/modbus/3.1.11 third_party/modbus/3.1.11
third_party/visp/3.7.0 third_party/visp/3.7.0
third_party/mainif/0.0.5 third_party/mainif/0.0.5
third_party/matplotplusplus/1.2.0