std::vector<Vec2> AutoPolygon::reduce(const std::vector<Vec2>& points, const Rect& rect , const float& epsilon) { auto size = points.size(); // if there are less than 3 points, then we have nothing if(size<3) { log("AUTOPOLYGON: cannot reduce points for %s that has less than 3 points in input, e: %f", _filename.c_str(), epsilon); return std::vector<Vec2>(); } // if there are less than 9 points (but more than 3), then we don't need to reduce it else if (size < 9) { log("AUTOPOLYGON: cannot reduce points for %s e: %f",_filename.c_str(), epsilon); return points; } float maxEp = MIN(rect.size.width, rect.size.height); float ep = clampf(epsilon, 0.0, maxEp/_scaleFactor/2); std::vector<Vec2> result = rdp(points, ep); auto last = result.back(); if(last.y > result.front().y && last.getDistance(result.front()) < ep*0.5) { result.front().y = last.y; result.pop_back(); } return result; }
int main(void) { // PORTC_PCR5 = PORT_PCR_MUX(0x1); // LED is on PC5 (pin 13), config as GPIO (alt = 1) // GPIOC_PDDR = (1<<5); // make this an output pin // LED_OFF; // start with LED off UARTInit(TERM_UART, TERM_BAUD); // open UART for comms xputs(hello); xputs("\n\rEnter a string to parse...\n\r"); EnableInterrupts; while (1) { xputs("\n\rString: "); get_line(buff, MAX_STR_LEN); if (strlen(buff) > 0) { answer = 0; error = rdp(buff, &answer); if (error == RDP_OK) { xprintf("Answer = %d 0x%08x\n\r", answer, answer); } else { xprintf("ERROR: rdp() returned %d\n\r", error); } } } return 0; // should never get here! }
long long count_letters(Vector in, int start, int end){ long long count = 0; for(int pos = start; pos < end || (end < 0 && Vector_data_char(in)[pos]);){ long long length; pos = rdp(in, pos, &length, 1); count += length; } return count; }
static Vector<Vector2> rdp(const Vector<Vector2> &v, float optimization) { if (v.size() < 3) return v; int index = -1; float dist = 0; //not looping first and last point for (size_t i = 1, size = v.size(); i < size - 1; ++i) { float cdist = perpendicular_distance(v[i], v[0], v[v.size() - 1]); if (cdist > dist) { dist = cdist; index = static_cast<int>(i); } } if (dist > optimization) { Vector<Vector2> left, right; left.resize(index); for (int i = 0; i < index; i++) { left.write[i] = v[i]; } right.resize(v.size() - index); for (int i = 0; i < right.size(); i++) { right.write[i] = v[index + i]; } Vector<Vector2> r1 = rdp(left, optimization); Vector<Vector2> r2 = rdp(right, optimization); int middle = r1.size(); r1.resize(r1.size() + r2.size()); for (int i = 0; i < r2.size(); i++) { r1.write[middle + i] = r2[i]; } return r1; } else { Vector<Vector2> ret; ret.push_back(v[0]); ret.push_back(v[v.size() - 1]); return ret; } }
std::vector<cocos2d::Vec2> AutoPolygon::rdp(const std::vector<cocos2d::Vec2>& v, float optimization) { if(v.size() < 3) return v; int index = -1; float dist = 0; //not looping first and last point for(size_t i = 1; i < v.size()-1; i++) { float cdist = perpendicularDistance(v[i], v.front(), v.back()); if(cdist > dist) { dist = cdist; index = static_cast<int>(i); } } if (dist>optimization) { std::vector<Vec2>::const_iterator begin = v.begin(); std::vector<Vec2>::const_iterator end = v.end(); std::vector<Vec2> l1(begin, begin+index+1); std::vector<Vec2> l2(begin+index, end); std::vector<Vec2> r1 = rdp(l1, optimization); std::vector<Vec2> r2 = rdp(l2, optimization); r1.insert(r1.end(), r2.begin()+1, r2.end()); return r1; } else { std::vector<Vec2> ret; ret.push_back(v.front()); ret.push_back(v.back()); return ret; } }
void part1(){ char c; Vector in = Vector_create_char(); long long count = 0; while(scanf("%c", &c) != EOF){ Vector_push_char(in, c); } Vector_push_char(in, 0); for(int pos = 0; Vector_data_char(in)[pos];){ long long length; pos = rdp(in, pos, &length, 0); count += length; } printf("%lld\n", count); Vector_free(in); }
void PerformRawDataPreparation(Dimension &dims, OptionsParser &op, CVector &kdata, RVector &mask, RVector &w) { RawDataPreparation rdp(op, true, true, true, true); std::cout << "INFO: Loading RAW data from file/directory: " << op.kdataFilename << std::endl; std::string outputDir = utils::GetParentDirectory(op.outputFilename); rdp.PrepareRawData(kdata, mask, w, dims); // Extract dicom raw data and prepare it if (op.nonuniform) { ExportAdditionalResultsToMatlabBin(outputDir.c_str(), "w.bin", w); } ExportAdditionalResultsToMatlabBin(outputDir.c_str(), "mask.bin", mask); ExportAdditionalResultsToMatlabBin(outputDir.c_str(), "kdata.bin", kdata); }
static Vector<Vector2> reduce(const Vector<Vector2> &points, const Rect2i &rect, float epsilon) { int size = points.size(); // if there are less than 3 points, then we have nothing ERR_FAIL_COND_V(size < 3, Vector<Vector2>()); // if there are less than 9 points (but more than 3), then we don't need to reduce it if (size < 9) { return points; } float maxEp = MIN(rect.size.width, rect.size.height); float ep = CLAMP(epsilon, 0.0, maxEp / 2); Vector<Vector2> result = rdp(points, ep); Vector2 last = result[result.size() - 1]; if (last.y > result[0].y && last.distance_to(result[0]) < ep * 0.5f) { result.write[0].y = last.y; result.resize(result.size() - 1); } return result; }
void ASSR::add_data(Ptr<FineNowcastingData> dp) { DataPolicy::add_data(dp); Ptr<RegressionData> rdp(dp->regression_data()); regression_->add_data(rdp); // full of missing values }
int main(int argc, char* argv[], char* envp[]){ //silence warnings (void)envp; if(argc != 4){ printf("Wrong number of arguments. Usage %s <local port> <remote host> <remote port> \n", argv[0]); return 1; } int listenPort = atoi(argv[1]); //timing synchronization //apps will signal when they're all done pthread_mutex_init(&count_mutex, NULL); pthread_cond_init (&count_threshold_cv, NULL); struct timeval t1; struct timeval t2; // set up network ppETH eth(1, listenPort, argv[3], argv[2]); ppIP ip(2); ppTCP tcp(3); ppUDP udp(4); ppFTP ftp(5); ppTEL tel(6); ppRDP rdp(7); ppDNS dns(8); ftpAPP ftpApplication(5, true); telAPP telApplication(6, true); rdpAPP rdpApplication(7, true); dnsAPP dnsApplication(8, true); eth.registerHLP(ip); ip.registerHLP(tcp); ip.registerHLP(udp); tcp.registerHLP(ftp); tcp.registerHLP(tel); udp.registerHLP(rdp); udp.registerHLP(dns); dns.registerHLP(dnsApplication); ftp.registerHLP(ftpApplication); rdp.registerHLP(rdpApplication); tel.registerHLP(telApplication); ftp.registerLLP(tcp); tel.registerLLP(tcp); rdp.registerLLP(udp); dns.registerLLP(udp); tcp.registerLLP(ip); udp.registerLLP(ip); ip.registerLLP(eth); dnsApplication.registerLLP(dns); ftpApplication.registerLLP(ftp); rdpApplication.registerLLP(rdp); telApplication.registerLLP(tel); ip.start(); tcp.start(); udp.start(); ftp.start(); tel.start(); rdp.start(); dns.start(); //make sure everything is set before we start timing sleep(5); gettimeofday(&t1, NULL); // dnsApplication.startListen(); // ftpApplication.startListen(); // rdpApplication.startListen(); // telApplication.startListen(); dnsApplication.startApplication(); ftpApplication.startApplication(); rdpApplication.startApplication(); telApplication.startApplication(); //wait for apps to finish and then stop timing or whatever pthread_mutex_lock(&count_mutex); while (count<numApps*2) { pthread_cond_wait(&count_threshold_cv, &count_mutex); } pthread_mutex_unlock(&count_mutex); gettimeofday(&t2, NULL); printf("Listening on %d took %f ms\n", listenPort, diffms(t2,t1)); }
void TextureBuilder::createTextureWorkflow(QString prefix, bool bCreateImage , QString backgroundImage , QString destImage, bool last) { QStringList data; data << "Perlin" << "Billow" << "RidgedMulti" << "Voronoi"; QSharedPointer<ModuleDescriptor> p(new ModuleDescriptor()); p.data()->setName(prefix+"_Module"); p.data()->setModuleType(data[SSGX::d1000() % 4]); p.data()->setupPropertiesToExport(p.data()->moduleType()); p.data()->setEnableRandom(true); p.data()->setEnabledist(true); if (last) { p.data()->moduleType() != "Voronoi" ? p.data()->setFreq(1.9*SSGX::floatRand()+1.2) : p.data()->setFreq(5*SSGX::floatRand()+3.2) ; p.data()->setLac(1.9*SSGX::floatRand()+1.2); p.data()->setPers(0.25*SSGX::floatRand()+0.22); } else { p.data()->moduleType() != "Voronoi" ? p.data()->setFreq(3.2*SSGX::floatRand()+1.2) : p.data()->setFreq(10.2*SSGX::floatRand()+5.2); p.data()->setLac(3.2*SSGX::floatRand()+1.2); p.data()->setPers(0.2*SSGX::floatRand()+0.22); } _modDesc.insert(p.data()->name(),p); QSharedPointer<HeightMapDescriptor> hmp(new HeightMapDescriptor()); hmp.data()->setName(prefix+"_heightMap"); _hmDesc.insert(hmp.data()->name(), hmp); if (bCreateImage) { QSharedPointer<ImageDescriptor> imp(new ImageDescriptor()); imp.data()->setName(destImage); __imDesc.insert(imp.data()->name(),imp); } QSharedPointer<NoiseMapBuilderDescriptor> nmbd(new NoiseMapBuilderDescriptor()); nmbd.data()->setName(prefix+"_noiseMapBuilder1"); nmbd.data()->setSourceModule(p.data()->name()); nmbd.data()->setSize(1024,512); nmbd.data()->setDest(hmp.data()->name()); _nmbDesc.insert(nmbd.data()->name(),nmbd); QSharedPointer<RendererDescriptor> rdp(new RendererDescriptor()); rdp.data()->setName(prefix+"_renderer"); rdp.data()->setHeightmap(hmp.data()->name()); rdp.data()->gradientInfo().clear(); if (backgroundImage == "") { auto rndGradient = ColorOps::randomGradient(12,20, ColorOps::randomHSLColor()); for (auto i = rndGradient.begin(); i != rndGradient.end(); ++i) { rdp.data()->gradientInfo().append(GradientInfo( i.key(), i.value().red(), i.value().green(), i.value().blue(), i.value().alpha()) ); } auto c = ColorOps::randomHSLColor(); rdp.data()->gradientInfo().append(GradientInfo(1.0,c.red(),c.green(),c.blue(),c.alpha())); } else { auto rndGradient = ColorOps::randomGradient(12,20, ColorOps::randomHSLColor(),true,0,128); for (auto i = rndGradient.begin(); i != rndGradient.end(); ++i) { rdp.data()->gradientInfo().append(GradientInfo( i.key(), i.value().red(), i.value().green(), i.value().blue(), i.value().alpha()) ); } auto c = ColorOps::randomHSLColor(); rdp.data()->gradientInfo().append(GradientInfo(1.0,c.red(),c.green(),c.blue(),c.alpha())); } if (last) { rdp.data()->setEnabledlight(true); rdp.data()->setLightbrightness(2.0); rdp.data()->setLightcontrast(1.4); auto c = rdp.data()->gradientInfo().count() / 3; auto d = c+ SSGX::dn(c); qDebug() << "last enabled. " << c << ", " << d; for (auto h = 0; h < rdp.data()->gradientInfo().count(); ++h) { if (h < d) { auto t = rdp.data()->gradientInfo()[h]; auto newT = std::tuple<double,int,int,int,int>( std::get<0>(t), std::get<1>(t), std::get<2>(t), std::get<3>(t), 255 ); rdp.data()->gradientInfo()[h] = newT; } else { auto t = rdp.data()->gradientInfo()[h]; auto newT = std::tuple<double,int,int,int,int>( std::get<0>(t), std::get<1>(t), std::get<2>(t), std::get<3>(t), 0 ); rdp.data()->gradientInfo()[h] = newT; } } } rdp.data()->setBackgroundImage(backgroundImage); rdp.data()->setDestImage(destImage); this->addRendererDescriptor(rdp.data()->name(),rdp); }
void parse(){ buff[buffl]='\0'; rdp();// }