本文整理汇总了C++中N函数的典型用法代码示例。如果您正苦于以下问题:C++ N函数的具体用法?C++ N怎么用?C++ N使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了N函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int
main(int argc, char *argv[])
{
const char *cp, *tp;
const char *sep;
int op, i;
u_int32_t debug, ndebug;
size_t debuglen;
char oid[256];
progname = argv[0];
setoid(oid, sizeof(oid), "wlan0");
if (argc > 1) {
if (strcmp(argv[1], "-d") == 0) {
setoid(oid, sizeof(oid), NULL);
argc -= 1, argv += 1;
} else if (strcmp(argv[1], "-i") == 0) {
if (argc <= 2)
errx(1, "missing interface name for -i option");
get_orig_iface_name(oid, sizeof(oid), argv[2]);
argc -= 2, argv += 2;
} else if (strcmp(argv[1], "-?") == 0)
usage();
}
debuglen = sizeof(debug);
if (sysctlbyname(oid, &debug, &debuglen, NULL, 0) < 0)
err(1, "sysctl-get(%s)", oid);
ndebug = debug;
for (; argc > 1; argc--, argv++) {
cp = argv[1];
do {
u_int bit;
if (*cp == '-') {
cp++;
op = -1;
} else if (*cp == '+') {
cp++;
op = 1;
} else
op = 0;
for (tp = cp; *tp != '\0' && *tp != '+' && *tp != '-';)
tp++;
bit = getflag(cp, tp-cp);
if (op < 0)
ndebug &= ~bit;
else if (op > 0)
ndebug |= bit;
else {
if (bit == 0) {
int c = *cp;
if (isdigit(c))
bit = strtoul(cp, NULL, 0);
else
errx(1, "unknown flag %.*s",
(int)(tp-cp), cp);
}
ndebug = bit;
}
} while (*(cp = tp) != '\0');
}
if (debug != ndebug) {
printf("%s: 0x%x => ", oid, debug);
if (sysctlbyname(oid, NULL, NULL, &ndebug, sizeof(ndebug)) < 0)
err(1, "sysctl-set(%s)", oid);
printf("0x%x", ndebug);
debug = ndebug;
} else
printf("%s: 0x%x", oid, debug);
sep = "<";
for (i = 0; i < N(flags); i++)
if (debug & flags[i].bit) {
printf("%s%s", sep, flags[i].name);
sep = ",";
}
printf("%s\n", *sep != '<' ? ">" : "");
return 0;
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:79,代码来源:wlandebug.c
示例2:
int
drd_info_rep::get_writability (tree_label l, int nr) {
if (nr >= N(info[l]->ci)) return WRITABILITY_NORMAL;
return info[l]->ci[nr].writability;
}
开发者ID:Easycker,项目名称:itexmacs,代码行数:5,代码来源:drd_info.cpp
示例3: if
tree
drd_info_rep::arg_access (tree t, tree arg, tree env, int& type) {
// returns "" if unaccessible and the env if accessible
//cout << " arg_access " << t << ", " << arg << ", " << env << "\n";
if (is_atomic (t)) return "";
else if (t == arg) return env;
else if (is_func (t, QUOTE_ARG, 1) && N(arg) == 1 && t[0] == arg[0])
return env;
else if (is_func (t, MAP_ARGS) && (t[2] == arg[0])) {
if ((N(t) >= 4) && (N(arg) >= 2) && (as_int (t[3]) > as_int (arg[1])))
return "";
if ((N(t) == 5) && (N(arg) >= 2) && (as_int (t[3]) <= as_int (arg[1])))
return "";
tree_label inner= make_tree_label (as_string (t[0]));
tree_label outer= make_tree_label (as_string (t[1]));
if (get_nr_indices (inner) > 0)
type= get_type_child (tree (inner, arg), 0);
if ((get_nr_indices (inner) > 0) &&
(get_accessible (inner, 0) == ACCESSIBLE_ALWAYS) &&
all_accessible (outer))
return env;
return "";
}
else if (is_func (t, MACRO)) return "";
else if (is_func (t, WITH)) {
int n= N(t)-1;
//cout << "env= " << drd_env_merge (env, t (0, n)) << "\n";
return arg_access (t[n], arg, drd_env_merge (env, t (0, n)), type);
}
else if (is_func (t, TFORMAT)) {
int n= N(t)-1;
tree oldf= drd_env_read (env, CELL_FORMAT, tree (TFORMAT));
tree newf= oldf * tree (TFORMAT, A (t (0, n)));
tree w = tree (ATTR, CELL_FORMAT, newf);
tree cenv= get_env_child (t, n, drd_env_merge (env, w));
return arg_access (t[n], arg, cenv, type);
}
else if (is_func (t, COMPOUND) && N(t) >= 1 && is_atomic (t[0]))
return arg_access (compound (t[0]->label, A (t (1, N(t)))),
arg, env, type);
else if ((is_func (t, IF) || is_func (t, VAR_IF)) && N(t) >= 2)
return arg_access (t[1], arg, env, type);
else {
int i, n= N(t);
for (i=0; i<n; i++) {
int ctype= get_type_child (t, i);
tree cenv = get_env_child (t, i, env);
tree aenv = arg_access (t[i], arg, cenv, ctype);
if (aenv != "") {
if (ctype != TYPE_INVALID) type= ctype;
if (is_accessible_child (t, i)) return aenv;
}
else if (type == TYPE_UNKNOWN &&
ctype != TYPE_INVALID &&
ctype != TYPE_UNKNOWN) {
type= ctype;
//cout << " found type " << t << ", " << arg << ", " << type << "\n";
}
}
return "";
}
}
开发者ID:Easycker,项目名称:itexmacs,代码行数:62,代码来源:drd_info.cpp
示例4: return
bool
drd_info_rep::is_parent_enforcing (tree t) {
return ((info[L(t)]->pi.border_mode & BORDER_OUTER) != 0) &&
(N(t) != 0);
}
开发者ID:Easycker,项目名称:itexmacs,代码行数:5,代码来源:drd_info.cpp
示例5: N
sp<MediaPlayerBase> AmSuperPlayer::CreatePlayer()
{
sp<MediaPlayerBase> p;
char *filetype;
int mvideo,maudio;
player_type newtype=AMLOGIC_PLAYER;
mTypeReady=false;
//p= new AmlogicPlayer();
Retry:
{
Mutex::Autolock N(mNotifyMutex);
oldmsg_num=0;
memset(oldmsg,0,sizeof(oldmsg));
}
p=android::createPlayer(newtype, this,notify);
if (!p->hardwareOutput()) {
static_cast<MediaPlayerInterface*>(p.get())->setAudioSink(mAudioSink);
}
TRACE();
if(url_valid)
p->setDataSource(muri,&mheaders);
else if(fd_valid)
p->setDataSource(mfd,moffset,mlength);
else
return NULL;
if(mSurface != NULL)
p->setVideoSurface(mSurface);
p->prepareAsync();
if(!mTypeReady && p->playerType()==AMLOGIC_PLAYER){
AmlogicPlayer* amplayer;
bool FileTypeReady=false;
amplayer=(AmlogicPlayer *)p.get();
while(!mTypeReady)
{
int ret;
Mutex::Autolock l(mMutex);
mCondition.wait(mMutex);
if(mEXIT)
break;
}
if(mTypeReady){
FileTypeReady=!amplayer->GetFileType(&filetype,&mvideo,&maudio);
TRACE();
}
if(FileTypeReady){
LOGV("SuperGetPlayerType:type=%s,videos=%d,audios=%d\n",filetype,mvideo,maudio);
newtype=SuperGetPlayerType(filetype,mvideo,maudio);
LOGV("GET New type =%d\n",newtype);
}
else{
newtype=SuperGetPlayerType(NULL,0,0);
}
}
TRACE();
if(mEXIT){
p->stop();
p.clear();
p=NULL;
}
else if(newtype!=p->playerType()){
LOGV("Need to creat new player=%d\n",newtype);
p->stop();
p.clear();
if(fd_valid){
lseek(mfd,moffset,SEEK_SET);/*reset to before*/
}
p=NULL;
goto Retry;
}
TRACE();
LOGV("Start new player now=%d\n",newtype);
return p;
}
开发者ID:yalongsh,项目名称:cm_device_amlogic_common-g,代码行数:74,代码来源:AmSuperPlayer.cpp
示例6: N
int
drd_info_rep::get_nr_indices (tree_label l) {
return N(info[l]->ci);
}
开发者ID:Easycker,项目名称:itexmacs,代码行数:4,代码来源:drd_info.cpp
示例7: initialize_default_env
/*static*/ void
initialize_default_env () {
if (N(default_env) != 0) return;
hashmap<string,tree>& env= default_env;
tree identity_m (MACRO, "x", tree (ARG, "x"));
tree tabular_m (MACRO, "x", tree (TFORMAT, tree (ARG, "x")));
tree the_page (MACRO, compound ("page-nr"));
tree gr_geometry (TUPLE, "geometry", "1par", "0.6par", "center");
tree gr_frame (TUPLE, "scale", "1cm", tree (TUPLE, "0.5gw", "0.5gh"));
tree gr_grid ("");
tree gr_edit_grid ("");
tree gr_grid_aspect (TUPLE,
tuple ("axes", "#808080"),
tuple ("1", "#c0c0c0"),
tuple ("10", "#e0e0ff"));
tree gr_transf (TUPLE,
tuple ("1.0", "0.0", "0.0", "0.0"),
tuple ("0.0", "1.0", "0.0", "0.0"),
tuple ("0.0", "0.0", "1.0", "0.0"),
tuple ("0.0", "0.0", "0.0", "1.0"));
env (DPI) = "600"; // resolution in dots per inch
env (ZOOM_FACTOR) = "1"; // zoom factor on screen
env (PREAMBLE) = "false"; // preamble mode ?
env (SAVE_AUX) = "true"; // save auxiliary data on disk ?
env (MODE) = "text"; // typesetting mode
env (INFO_FLAG) = "minimal"; // information about labels, etc.
env (WINDOW_BARS) = "auto"; // override menu/icon bar settings
env (SCROLL_BARS) = "true"; // allow scroll bars around canvas?
env (IDENTITY) = identity_m; // identity macro
env (TABULAR) = tabular_m; // tabular macro
env (THE_LABEL) = "?"; // value of the next label
env (THE_TAGS) = tree(TUPLE); // current tags
env (THE_MODULES) = tree(TUPLE); // necessary modules and plug-ins
env (WARN_MISSING) = "true"; // warn about missing references
env (GLOBAL_TITLE) = ""; // global document title
env (GLOBAL_AUTHOR) = ""; // global document author
env (GLOBAL_SUBJECT) = ""; // global document subject
env (FONT) = "roman"; // the font name in text mode
env (FONT_FAMILY) = "rm"; // the font family in text mode
env (FONT_SERIES) = "medium"; // the font series in text mode
env (FONT_SHAPE) = "right"; // the font shape in text mode
env (FONT_SIZE) = "1"; // the font size multiplier
env (FONT_BASE_SIZE) = "10"; // the font base size
env (MAGNIFICATION) = "1"; // magnification (slides for instance)
env (COLOR) = "black"; // the color
env (OPACITY) = "100%"; // the opacity
env (BG_COLOR) = "white"; // the background color
env (LOCUS_COLOR) = "global"; // the color of loci
env (VISITED_COLOR) = "global"; // the color of visited loci
env (NO_PATTERNS) = "false"; // disable background patterns
env (LANGUAGE) = "english"; // the language
env (ATOM_DECORATIONS) = DATOMS; // dots, underline, hyperlinks?, etc.
env (LINE_DECORATIONS) = DLINES; // boxed pars, nested envs, etc.
env (PAGE_DECORATIONS) = DPAGES; // future headers, footers, etc.
env (XOFF_DECORATIONS) = "0tmpt"; // hor. placement of decorations
env (YOFF_DECORATIONS) = "0tmpt"; // vert. placement of decorations
env (MATH_LANGUAGE) = "std-math"; // the default mathematical language
env (MATH_FONT) = "roman"; // the font name in math mode
env (MATH_FONT_FAMILY) = "mr"; // the font family in math mode
env (MATH_FONT_SERIES) = "medium"; // the font series in math mode
env (MATH_FONT_SHAPE) = "normal"; // the font shape in math mode
env (MATH_LEVEL) = "0"; // the index level (0, 1 or 2)
env (MATH_DISPLAY) = "false"; // true if we are in display style
env (MATH_CONDENSED) = "false"; // ignore spaces between operators ?
env (MATH_VPOS) = "0"; // used in fractions (-1, 0 or 1)
env (MATH_NESTING_MODE)= "off"; // color nested brackets?
env (MATH_NESTING_LEVEL)= "0"; // nesting level inside brackets
env (PROG_LANGUAGE) = "scheme"; // the default programming language
env (PROG_SCRIPTS) = "scheme"; // the scripting language
env (PROG_FONT) = "roman"; // the font name in prog mode
env (PROG_FONT_FAMILY) = "tt"; // the font family in prog mode
env (PROG_FONT_SERIES) = "medium"; // the font series in prog mode
env (PROG_FONT_SHAPE) = "right"; // the font shape in prog mode
env (PROG_SESSION) = "default"; // computer algebra session name
env (PAR_MODE) = "justify"; // outline method
env (PAR_FLEXIBILITY) = "1000"; // threshold for switching to ragged
env (PAR_HYPHEN) = "professional"; // quality of hyphenation
env (PAR_SPACING) = "plain"; // spacing mode (for CJK)
env (PAR_KERNING_STRETCH)= "auto"; // extra kerning around characters
env (PAR_KERNING_MARGIN) = "false"; // use marginal kerning (protrusion)
env (PAR_WIDTH) = "auto"; // width of paragraph
env (PAR_LEFT) = "0cm"; // left indentation
env (PAR_RIGHT) = "0cm"; // right indentation
env (PAR_FIRST) = "1.5fn"; // extra first indentation
env (PAR_NO_FIRST) = "false"; // no extra first indent. on next line
env (PAR_SEP) = "0.2fn"; // extra space between paragraph lines
env (PAR_HOR_SEP) = "0.5fn"; // min. hor. spc. between ink for shove
env (PAR_VER_SEP) = "0.2fn"; // min. ver. spc. between ink
env (PAR_LINE_SEP) = "0.025fns"; // extra (small) space between lines
env (PAR_PAR_SEP) = "0.5fns"; // extra space between paragraphs
env (PAR_FNOTE_SEP) = "0.2fn"; // min space between diff footnotes
//.........这里部分代码省略.........
开发者ID:niujiashu,项目名称:texmacs-mirror,代码行数:101,代码来源:env_default.cpp
示例8: WeatherPronounAir
Bool WeatherPronounAir(Obj *obj)
{
return(WeatherPronoun(obj) || N("air") == obj);
}
开发者ID:brunogal,项目名称:thoughttreasure,代码行数:4,代码来源:uaweath.c
示例9: WeatherPronounSky
Bool WeatherPronounSky(Obj *obj)
{
return(WeatherPronoun(obj) || N("sky") == obj);
}
开发者ID:brunogal,项目名称:thoughttreasure,代码行数:4,代码来源:uaweath.c
示例10: WeatherPronoun
Bool WeatherPronoun(Obj *obj)
{
return(ISA(N("pronoun-it-expletive"), obj) ||
ISA(N("pronoun-ce-expletive"), obj));
}
开发者ID:brunogal,项目名称:thoughttreasure,代码行数:5,代码来源:uaweath.c
示例11: createGMSHMesh
void
Beam<nDim,nOrder>::run()
{
this->changeRepository( boost::format( "doc/manual/solid/%1%/%2%/P%3%/h_%4%/" )
% this->about().appName()
% entity_type::name()
% nOrder
% meshSize );
/*
* First we create the mesh
*/
mesh_ptrtype mesh = createGMSHMesh( _mesh=new mesh_type,
_update=MESH_UPDATE_EDGES|MESH_UPDATE_FACES|MESH_CHECK,
_desc=domain( _name=( boost::format( "beam-%1%" ) % nDim ).str() ,
_shape="hypercube",
_xmin=0., _xmax=0.351,
_ymin=0., _ymax=0.02,
_zmin=0., _zmax=0.02,
_h=meshSize ) );
// add marker clamped to the mesh
mesh->addMarkerName( "clamped",( nDim==2 )?1:19, (nDim==2)?1:2);
mesh->addMarkerName( "tip",( nDim==2)?3:27, (nDim==2)?1:2);
/*
* The function space and some associate elements are then defined
*/
timers["init"].first.restart();
space_ptrtype Xh = space_type::New( mesh );
Xh->printInfo();
element_type u( Xh, "u" );
element_type v( Xh, "v" );
timers["init"].second = timers["init"].first.elapsed();
/*
* Data associated with the simulation
*/
auto E = doption(_name="E")*pascal;
const double nu = doption(_name="nu");
auto mu = E/( 2*( 1+nu ) );
auto lambda = E*nu/( ( 1+nu )*( 1-2*nu ) );
auto density = 1e3;
auto gravity = -2*newton/pow<Dim>(meter);//-density*0.05;
LOG(INFO) << "lambda = " << lambda << "\n"
<< "mu = " << mu << "\n"
<< "gravity= " << gravity << "\n";
/*
* Construction of the right hand side
*
* \f$ f = \int_\Omega g * v \f$ where \f$ g \f$ is a vector
* directed in the \f$ y \f$ direction.
*/
auto F = backend()->newVector( Xh );
F->zero();
timers["assembly"].first.restart();
if ( Dim == 3 )
form1( _test=Xh, _vector=F ) = integrate( elements( mesh ), trans( gravity.value()*oneZ() )*id( v ) );
else
form1( _test=Xh, _vector=F ) = integrate( elements( mesh ), trans( gravity.value()*oneY() )*id( v ) );
timers["assembly"].second = timers["assembly"].first.elapsed();
/*
* Construction of the left hand side
*/
auto D = backend()->newMatrix( Xh, Xh );
timers["assembly"].first.restart();
auto deft = sym(gradt(u));
auto def = sym(grad(u));
auto a = form2( _test=Xh, _trial=Xh, _matrix=D );
a = integrate( elements( mesh ),
lambda.value()*divt( u )*div( v ) +
2.*mu.value()*trace( trans( deft )*def ) );
if ( M_bctype == 1 ) // weak Dirichlet bc
{
auto Id = eye<nDim>();
a += integrate( markedfaces( mesh, "clamped" ),
- trans( ( 2.*mu.value()*deft+lambda.value()*trace( deft )*Id )*N() )*id( v )
- trans( ( 2.*mu.value()*def+lambda.value()*trace( def )*Id )*N() )*idt( u )
+ bcCoeff*std::max(2.*mu.value(),lambda.value())*trans( idt( u ) )*id( v )/hFace() );
}
if ( M_bctype == 0 )
a += on( markedfaces( mesh, "clamped" ), u, F, zero<nDim,1>() );
timers["assembly"].second += timers["assembly"].first.elapsed();
backend(_rebuild=true)->solve( _matrix=D, _solution=u, _rhs=F );
v = vf::project( Xh, elements( Xh->mesh() ), P() );
this->exportResults( 0, u, v );
auto i1 = mean( _range=markedfaces( mesh, "tip" ), _expr=idv( u ) );
LOG(INFO) << "deflection: " << i1 << "\n";
//.........这里部分代码省略.........
开发者ID:LANTZT,项目名称:feelpp,代码行数:101,代码来源:beam.cpp
示例12: N
return TRUE;
/* Finally check for the default architecture. */
if (strcasecmp (string, "aarch64") == 0)
return info->the_default;
return FALSE;
}
#define N(NUMBER, PRINT, DEFAULT, NEXT) \
{ 64, 64, 8, bfd_arch_aarch64, NUMBER, \
"aarch64", PRINT, 4, DEFAULT, compatible, scan, \
bfd_arch_default_fill, NEXT }
const bfd_arch_info_type bfd_aarch64_arch =
N (0, "aarch64", TRUE, NULL);
bfd_boolean
bfd_is_aarch64_special_symbol_name (const char *name, int type)
{
if (!name || name[0] != '$')
return FALSE;
if (name[1] == 'x' || name[1] == 'd')
type &= BFD_AARCH64_SPECIAL_SYM_TYPE_MAP;
else if (name[1] == 'm' || name[1] == 'f' || name[1] == 'p')
type &= BFD_AARCH64_SPECIAL_SYM_TYPE_TAG;
else
return FALSE;
return (type != 0 && (name[2] == 0 || name[2] == '.'));
开发者ID:BackupGGCode,项目名称:propgcc,代码行数:31,代码来源:cpu-aarch64.c
示例13: main
int main(int argc, char** argv)
{
double taubin_radius = 0.03; // radius of curvature-estimation neighborhood
std::string file = "/home/andreas/data/mlaffordance/round21l_reg.pcd";
PointCloud::Ptr cloud(new PointCloud);
if (pcl::io::loadPCDFile<pcl::PointXYZRGBA>(file, *cloud) == -1) //* load the file
{
PCL_ERROR("Couldn't read input PCD file\n");
return (-1);
}
pcl::search::OrganizedNeighbor<pcl::PointXYZRGBA>::Ptr organized_neighbor(
new pcl::search::OrganizedNeighbor<pcl::PointXYZRGBA>());
std::vector<int> nn_outer_indices;
std::vector<float> nn_outer_dists;
pcl::KdTreeFLANN<pcl::PointXYZRGBA>::Ptr tree(new pcl::KdTreeFLANN<pcl::PointXYZRGBA>());
int sample_index = 0;
if (cloud->isOrganized())
{
organized_neighbor->setInputCloud(cloud);
organized_neighbor->radiusSearch(cloud->points[sample_index], taubin_radius, nn_outer_indices, nn_outer_dists);
}
else
{
tree->setInputCloud(cloud);
tree->radiusSearch(cloud->points[sample_index], taubin_radius, nn_outer_indices, nn_outer_dists);
}
Eigen::Matrix4d T_base, T_sqrt;
T_base << 0, 0.445417, 0.895323, 0.22, 1, 0, 0, -0.02, 0, 0.895323, -0.445417, 0.24, 0, 0, 0, 1;
T_sqrt << 0.9366, -0.0162, 0.3500, -0.2863, 0.0151, 0.9999, 0.0058, 0.0058, -0.3501, -0.0002, 0.9367, 0.0554, 0, 0, 0, 1;
std::vector<Eigen::Matrix4d, Eigen::aligned_allocator<Eigen::Matrix4d> > T_cams;
T_cams.push_back(T_base * T_sqrt.inverse());
Eigen::Vector3d sample = cloud->points[sample_index].getVector3fMap().cast<double>();
Quadric quadric(T_cams, cloud, sample, true);
quadric.fitQuadric(nn_outer_indices);
Eigen::MatrixXi cam_source = Eigen::MatrixXi::Zero(1, cloud->points.size());
quadric.findTaubinNormalAxis(nn_outer_indices, cam_source);
quadric.print();
std::set<Eigen::Vector3i, VectorComparator> s;
Eigen::Matrix3i M;
M << 1,1,1,2,3,4,1,1,1;
for (int i=0; i < M.rows(); i++)
s.insert(M.row(i));
std::cout << "M:" << std::endl;
std::cout << M << std::endl;
Eigen::Matrix<int, Eigen::Dynamic, 3> N(s.size(), 3);
int i = 0;
for (std::set<Eigen::Vector3i, VectorComparator>::iterator it=s.begin(); it!=s.end(); ++it)
{
N.row(i) = *it;
i++;
}
std::cout << "N:" << std::endl;
std::cout << N << std::endl;
return 0;
}
开发者ID:atenpas,项目名称:agile_grasp,代码行数:66,代码来源:test_taubin.cpp
示例14: V1
//-----------------------------------------------------------------------------
bool CCollision::CollisionTriangleSphere( const CVector3D &v0,const CVector3D &v1,const CVector3D &v2,const CVector3D ¢er,float radius ,CVector3D *cross,float *length)
{
CVector3D V1(v1-v0);
CVector3D V2(v2-v1);
CVector3D N(CVector3D::Cross(V1,V2).GetNormalize());
CVector3D V = center - v0;
//平面と点の距離を求める
float Dist = CVector3D::Dot(V,N);
//球の半径より離れている場合は接触無し
if(abs(Dist) > radius) return false;
//点から平面上に垂直に下ろした地点を求める
CVector3D Point = center - ( N * Dist );
//上記の点が三角形ポリゴン内なら接触している
if(TriangleIntersect( Point, v0, v1, v2 , N)) {
if(cross) *cross = Point;
if(length) *length = Dist;
return true;
}
//各辺に球がかすっている可能性がある
//1辺ごとに球と辺の最短距離を求める
//最短距離
float l;
//最短接触地点
CVector3D c;
//距離比較用
float LengthSq;
//辺1(v0→v1)
Point = PointOnLineSegmentNearestPoint( v0, v1, center );
LengthSq = (center - Point).LengthSq();
l = LengthSq;
c = Point;
//辺2(v1→v2)
Point = PointOnLineSegmentNearestPoint( v1, v2, center );
LengthSq = (center - Point).LengthSq();
if(l>LengthSq) {
l = LengthSq;
c = Point;
}
//辺3(v2→v0)
Point = PointOnLineSegmentNearestPoint( v2, v0, center );
LengthSq = (center - Point).LengthSq();
if(l>LengthSq) {
l = LengthSq;
c = Point;
}
l = sqrt(l);
//最短距離を確定
if(length) *length = l;
//最短地点を確定
if(cross) *cross = c;
return (l<=radius);
}
开发者ID:KemogeJam,项目名称:Kemoge,代码行数:72,代码来源:CCollision.cpp
示例15: main
int main(int argc, char** argv)
{
if(argc != 10) {
std::cerr << "Usage: " << argv[0] << " w h match.txt good_match.txt ntrials verb noseed mode stop" <<std::endl;
std::cerr << "w: width of image" <<std::endl;
std::cerr << "h: height of image" <<std::endl;
std::cerr << "match.txt: x1 y1 x2 y2 for each line" <<std::endl;
std::cerr << "good_match.txt: good matchings (x1 y1 x2 y2 for each line)" <<std::endl;
std::cerr << "ntrials: maximum number of ransac trials" <<std::endl;
std::cerr << "verb: verbose mode (1 enabled, 0 disabled)" <<std::endl;
std::cerr << "seed: random seed (0=reinitialize)" <<std::endl;
std::cerr << "mode: 0=all 1=ransac 2=optimized ransac (ORSA) 3=automatic" <<std::endl;
std::cerr << "stop: stop when first meaningful F is found (1 enabled, 0 disabled)" <<std::endl;
return 1;
}
int width = 0, height = 0; // dimensions of image
int ntrials = 0; // maximum number of ransac trials
bool verb = false; // verbose
unsigned long seed = 0; // seed value (0=reinitialize)
int mode = -1; // 0=all 1=ransac 2=optimized ransac (ORSA) 3=automatic
bool stop = false; // stop when first meaningful F is found
if(! (std::istringstream(argv[1]) >> width).eof()) width = 0;
if(! (std::istringstream(argv[2]) >> height).eof()) height = 0;
if(width <=0 || height <= 0) {
std::cerr << "Wrong dimensions of image" << std::endl;
return 1;
}
std::vector<Match> match;
if(! loadMatch(argv[3],match)) {
std::cerr << "Failed reading " << argv[3] << std::endl;
return 1;
}
if(! (std::istringstream(argv[5]) >> ntrials).eof() || ntrials <= 0) {
std::cerr << "ntrials should be greater than 0" << std::endl;
return 1;
}
if(! (std::istringstream(argv[6]) >> verb).eof()) {
std::cerr << "verb can only be 0 or 1" << std::endl;
return 1;
}
if(! (std::istringstream(argv[7]) >> seed).eof()) {
std::cerr << "seed must be a non-negative integer value" << std::endl;
return 1;
}
if(! (std::istringstream(argv[8]) >> mode).eof() || mode < 0 || mode > 3) {
std::cerr << "mode can only be 0, 1, 2, or 3" << std::endl;
return 1;
}
if(! (std::istringstream(argv[9]) >> stop).eof()) {
std::cerr << "stop can only be 0 or 1" << std::endl;
return 1;
}
// Initialize random seed if necessary
if(seed == 0) {
seed = (long int)time(NULL);
if(verb)
std::cout << "seed: " << seed << std::endl; // Useful for debugging
}
srand(seed);
// Remove duplicates (frequent with SIFT)
std::sort(match.begin(), match.end());
std::vector<Match>::iterator end = std::unique(match.begin(), match.end());
if(end != match.end()) {
if(verb)
std::cout << "Remove " << std::distance(end,match.end())
<< "/" << match.size() << " duplicate matches"<<std::endl;
match.erase(end, match.end());
}
// Normalize coordinates
std::vector<Match> matchBackup(match);
float nx = (float)width;
float ny = (float)height;
float norm = 1.0f/sqrt((float)(nx*ny));
for(size_t i=0; i<match.size(); i++) {
match[i].x1 = (match[i].x1-0.5f*nx)*norm;
match[i].y1 = (match[i].y1-0.5f*ny)*norm;
match[i].x2 = (match[i].x2-0.5f*nx)*norm;
match[i].y2 = (match[i].y2-0.5f*ny)*norm;
}
libNumerics::matrix<float> N(3,3); // Normalization matrix
N = 0;
N(0,0) = N(1,1) = norm; N(2,2) = 1.0f;
N(0,2) = -0.5f*nx*norm;
N(1,2) = -0.5f*ny*norm;
// log proba of a uniform point in image within a band of 1 pixel from line
float logalpha0 = log10(2.0f)+0.5f*log10((nx*nx+ny*ny)/float(nx*ny));
std::vector<size_t> inliers;
float error;
//.........这里部分代码省略.........
开发者ID:UIKit0,项目名称:MissStereo,代码行数:101,代码来源:main.cpp
示例16: V
bool CCollision::CollisionTriangleCapsule(const CVector3D &v0,const CVector3D &v1,const CVector3D &v2,const CVector3D &top,const CVector3D &bottom,float radius,CVector3D *cross,float *length ){
CVector3D V(top-bottom);
CVector3D VP;
float Dist = 1e10;
//ポリゴンの法線を求める
CVector3D N(CVector3D::Cross(v1 - v0, v2 - v0).GetNormalize());
//始点からポリゴン上のある地点(どこでもいい)へのベクトル
CVector3D PV1 = top-v0;
//終点からポリゴン上のある地点(どこでもいい)へのベクトル
CVector3D PV2 = bottom-v0;
//ポリゴンの法線との内積を求める
float d1 = CVector3D::Dot(PV1,N);
float d2 = CVector3D::Dot(PV2,N);
if(d1*d2<0) {
//貫通している場合は線とポリゴンの判定を行う
if(IntersectTriangleRay(cross,top+CVector3D(0,radius,0),bottom+CVector3D(0,-radius,0),v0,v1,v2,&Dist)) {
if(length) {
//貫通点までの距離を求める
float lt = (*cross - top).LengthSq();
float lb = (*cross - bottom).LengthSq();
if(lt<lb) *length = sqrt(lt);
else *length = sqrt(lb);
}
return true;
}
}
d1=abs(d1);
d2=abs(d2);
//平面上の点との最短地点を求める
CVector3D C1(top-N*d1);
CVector3D C2(bottom-N*d2);
//点が平面上にない場合は無効、後の辺との接触で調べる
if(!TriangleIntersect(C1,v0,v1,v2,N)) d1=1e10;
if(!TriangleIntersect(C2,v0,v1,v2,N)) d2=1e10;
//面との距離が近い点の距離を選択
Dist = (d1<d2) ? d1:d2;
if(Dist<=radius) {
//追加
if(length) *length = Dist;
return true;
}
//各辺との距離を求める
Dist = min(min(DistanceLine(v0,v1,top,bottom),DistanceLine(v1,v2,top,bottom)),DistanceLine(v2,v0,top,bottom));
if(length) *length = Dist;
return (Dist<=radius);
}
开发者ID:KemogeJam,项目名称:Kemoge,代码行数:64,代码来源:CCollision.cpp
示例17: memset
ENetError pnGateKeeperClient::performConnect()
{
uint8_t connectHeader[51]; // ConnectHeader + GateKeeperConnectHeader
/* Begin ConnectHeader */
*(uint8_t* )(connectHeader ) = kConnTypeCliToGateKeeper;
*(uint16_t*)(connectHeader + 1) = 31;
*(uint32_t*)(connectHeader + 3) = fBuildId;
*(uint32_t*)(connectHeader + 7) = fBuildType;
*(uint32_t*)(connectHeader + 11) = fBranchId;
fProductId.write(connectHeader + 15);
/* Begin GateKeeperConnectHeader */
*(uint32_t*)(connectHeader + 31) = 20;
memset(connectHeader + 35, 0, 16);
fSock->send(connectHeader, 51);
if (!fSock->isConnected()) {
delete fSock;
fSock = NULL;
plDebug::Error("Error establishing GateKeeper connection");
return kNetErrConnectFailed;
}
/* Set up encryption */
uint8_t y_data[64];
pnBigInteger clientSeed;
{
pnBigInteger X(fKeyX, 64, fLittleEndianKeys);
pnBigInteger N(fKeyN, 64, fLittleEndianKeys);
pnBigInteger b = pnBigInteger::Random(512);
clientSeed = X.PowMod(b, N);
pnBigInteger serverSeed = pnBigInteger(4).PowMod(b, N);
serverSeed.getData(y_data, 64);
}
uint8_t cryptHeader[66];
*(uint8_t*)(cryptHeader ) = kNetCliCli2SrvConnect;
*(uint8_t*)(cryptHeader + 1) = 66;
memcpy(cryptHeader + 2, y_data, 64);
fSock->send(cryptHeader, 66);
uint8_t msg, len;
if (fSock->recv(&msg, 1) <= 0 || fSock->recv(&len, 1) <= 0) {
delete fSock;
fSock = NULL;
plDebug::Error("Error negotiating GateKeeper connection");
return kNetErrConnectFailed;
}
if (msg == kNetCliSrv2CliEncrypt) {
uint8_t serverSeed[7];
fSock->recv(serverSeed, 7);
uint8_t seedData[64];
clientSeed.getData(seedData, 64);
for (size_t i=0; i<7; i++)
serverSeed[i] ^= seedData[i];
fSock->init(7, serverSeed);
} else if (msg == kNetCliSrv2CliError) {
uint32_t errorCode;
fSock->recv(&errorCode, sizeof(uint32_t));
delete fSock;
fSock = NULL;
plDebug::Error("Error connecting to GateKeeper server: %s",
GetNetErrorString(errorCode));
return (ENetError)errorCode;
} else {
delete fSock;
fSock = NULL;
plDebug::Error("Got junk response from server");
return kNetErrConnectFailed;
}
fDispatch = new Dispatch(this);
if (fThreaded)
fIface = new pnThreadedSocket(fDispatch, fSock);
else
fIface = new pnPolledSocket(fDispatch, fSock);
fIface->run();
return kNetSuccess;
}
开发者ID:GPNMilano,项目名称:libhsplasma,代码行数:78,代码来源:pnGateKeeperClient.cpp
示例18: zfHpAniControl
/*
* Control Adaptive Noise Immunity Parameters
*/
u8_t zfHpAniControl(zdev_t *dev, ZM_HAL_ANI_CMD cmd, int param)
{
#define N(a) (sizeof(a)/sizeof(a[0]))
typedef s32_t TABLE[];
struct zsHpPriv *HpPriv;
struct zsAniState *aniState;
zmw_get_wlan_dev(dev);
HpPriv = (struct zsHpPriv *)wd->hpPrivate;
aniState = HpPriv->curani;
switch (cmd)
{
case ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL:
{
u32_t level = param;
if (level >= N(HpPriv->totalSizeDesired)) {
zm_debug_msg1("level out of range, desired level : ", level);
zm_debug_msg1("max level : ", N(HpPriv->totalSizeDesired));
return FALSE;
}
zfDelayWriteInternalReg(dev, AR_PHY_DESIRED_SZ,
(HpPriv->regPHYDesiredSZ & ~AR_PHY_DESIRED_SZ_TOT_DES)
| ((HpPriv->totalSizeDesired[level] << AR_PHY_DESIRED_SZ_TOT_DES_S)
& AR_PHY_DESIRED_SZ_TOT_DES));
zfDelayWriteInternalReg(dev, AR_PHY_AGC_CTL1,
(HpPriv->regPHYAgcCtl1 & ~AR_PHY_AGC_CTL1_COARSE_LOW)
| ((HpPriv->coarseLow[level] << AR_PHY_AGC_CTL1_COARSE_LOW_S)
& AR_PHY_AGC_CTL1_COARSE_LOW));
zfDelayWriteInternalReg(dev, AR_PHY_AGC_CTL1,
(HpPriv->regPHYAgcCtl1 & ~AR_PHY_AGC_CTL1_COARSE_HIGH)
| ((HpPriv->coarseHigh[level] << AR_PHY_AGC_CTL1_COARSE_HIGH_S)
& AR_PHY_AGC_CTL1_COARSE_HIGH));
zfDelayWriteInternalReg(dev, AR_PHY_FIND_SIG,
(HpPriv->regPHYFindSig & ~AR_PHY_FIND_SIG_FIRPWR)
| ((HpPriv->firpwr[level] << AR_PHY_FIND_SIG_FIRPWR_S)
& AR_PHY_FIND_SIG_FIRPWR));
zfFlushDelayWrite(dev);
if (level > aniState->noiseImmunityLevel)
HpPriv->stats.ast_ani_niup++;
else if (level < aniState->noiseImmunityLevel)
HpPriv->stats.ast_ani_nidown++;
aniState->noiseImmunityLevel = (u8_t)level;
break;
}
case ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION:
{
const TABLE m1ThreshLow = { 127, 50 };
const TABLE m2ThreshLow = { 127, 40 };
const TABLE m1Thresh = { 127, 0x4d };
const TABLE m2Thresh = { 127, 0x40 };
const TABLE m2CountThr = { 31, 16 };
const TABLE m2CountThrLow = { 63, 48 };
u32_t on = param ? 1 : 0;
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M1_THRESH_LOW)
| ((m1ThreshLow[on] << AR_PHY_SFCORR_LOW_M1_THRESH_LOW_S)
& AR_PHY_SFCORR_LOW_M1_THRESH_LOW));
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M2_THRESH_LOW)
| ((m2ThreshLow[on] << AR_PHY_SFCORR_LOW_M2_THRESH_LOW_S)
& AR_PHY_SFCORR_LOW_M2_THRESH_LOW));
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M1_THRESH)
| ((m1Thresh[on] << AR_PHY_SFCORR_M1_THRESH_S)
& AR_PHY_SFCORR_M1_THRESH));
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M2_THRESH)
| ((m2Thresh[on] << AR_PHY_SFCORR_M2_THRESH_S)
& AR_PHY_SFCORR_M2_THRESH));
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M2COUNT_THR)
| ((m2CountThr[on] << AR_PHY_SFCORR_M2COUNT_THR_S)
& AR_PHY_SFCORR_M2COUNT_THR));
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW)
| ((m2CountThrLow[on] << AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW_S)
& AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW));
if (on)
{
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
HpPriv->regPHYSfcorrLow | AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW);
}
else
{
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW);
}
zfFlushDelayWrite(dev);
if (!on != aniState->ofdmWeakSigDetectOff)
{
if (on)
//.........这里部分代码省略.........
开发者ID:12rafael,项目名称:jellytimekernel,代码行数:101,代码来源:hpani.c
示例19: entities
xml_html_parser::xml_html_parser (): entities ("") {
if (N(html_empty_tag_table) == 0) {
html_empty_tag_table->insert ("basefont");
html_empty_tag_table->insert ("br");
html_empty_tag_table->insert ("area");
html_empty_tag_table->insert ("link");
html_empty_tag_table->insert ("param");
html_empty_tag_table->insert ("hr");
html_empty_tag_table->insert ("input");
html_empty_tag_table->insert ("col");
html_empty_tag_table->insert ("frame");
html_empty_tag_table->insert ("isindex");
html_empty_tag_table->insert ("base");
html_empty_tag_table->insert ("meta");
html_empty_tag_table->insert ("img");
}
if (N(html_auto_close_table) == 0) {
html_auto_close_table->insert ("body");
html_auto_close_table->insert ("p");
html_auto_close_table->inse
|
请发表评论