当前位置: 新萄京娱乐网址2492777 > 古典文学 > 正文

为什么有人说满的啤酒瓶比空瓶更容易碎?【澳

时间:2019-12-22 09:34来源:古典文学
现在如果你手中只有一把直尺和一只啤酒瓶子,而且这只啤酒瓶子的下面2/3是规则的圆柱体,只有上面1/3不是规则的圆锥体。以上面的事例做参考,你怎样才能求出它的容积呢?解析:

现在如果你手中只有一把直尺和一只啤酒瓶子,而且这只啤酒瓶子的下面2/3是规则的圆柱体,只有上面1/3不是规则的圆锥体。以上面的事例做参考,你怎样才能求出它的容积呢?解析: 先把啤酒瓶底的直径测量出来,这样就可以计算出瓶底的面积。再在瓶中注入约一半的水,测出水的高度,做好记录;盖好瓶口后,把瓶子倒过来测量出瓶底到水面的高度,做记录。将两个做好的记录相加再乘以瓶底的面积便可知啤酒瓶的容积了。更多逻辑推理请关注逻辑推理能力测试题频道:

4、总结

综上,啤酒瓶的破裂与瓶身和啤酒密切相关。密封状态下,内外压是撞击破坏的主因。开口状态下,液体啤酒对底部的二次冲击是撞击破坏的主因。

在生活当中经常看见瓶装啤酒发生爆炸伤人事件,开启瓶盖不当是主要的爆炸原因之一,特别是现在的年轻人,喜欢用筷子撬,用牙咬,在菱角处碰,两瓶酒在一起搓盖,还有的一些是猛烈摇晃后在膝盖或桌面上一墩,让内压力顶开瓶盖,这是一种非常危险的方法。在内压力加大又遇到强大的外力冲击的时候,酒瓶很容易爆炸。

啤酒瓶爆炸也有一些其它的原因,现在瓶酒瓶都是需要回收的,有些回收瓶是超期服役的。有关规定是静止非B瓶啤酒生产销售,(B瓶就是瓶底部以上20毫米位置上打有标记B,并有生产企业标记,生产的年度和季度标识。)B瓶的回收期限是2年左右,如使用期限过长,容易引起瓶体划痕,擦伤和材质老化,造成抗压力下降,就容易爆炸。满啤酒瓶在遭受强烈撞击或猛烈摇晃之后,瓶内内压极速升高,因满瓶没有气体的压缩空间,内力直接作用在瓶上,如果瓶有老化或划痕就容易爆裂开来。

澳门新萄京最大平台 1FlaskView澳门新萄京最大平台 2FlaskView

曾经有这样一个故事,一名毕业于名牌大学数学系的学生,因为他是学校的佼佼者,所以十分傲慢;一位老者很看不惯就给他出了一道求容积的题,老者只是拿了一个灯泡,让他计算出灯泡的容积是多少。傲慢的学生拿着尺子算了好长时间,记了好多数据,也没有算出来,只是列出了一个复杂的算式来。而老者只是把灯泡中注满了水,然后用量筒量出了水的体积,很简单就算出了灯泡的容积。

1、密封的啤酒瓶

生活常识告诉我们,破酒瓶的封装后,瓶内会一同封印住大量的气体,即二氧化碳。二氧化碳的存在让夏天的冰啤更加具有良好的适口性。但是,同样的,瓶内的气压就会由于二氧化碳的存在而大于常压,通常有2个大气压的大小。啤酒瓶的受力分析如下图所示,内外压差有1个大气压左右。

因此,如果啤酒瓶质量不过关,到了夏天气温升高,瓶内压更大,即使不发生碰撞,啤酒瓶也可能因内压而炸裂。我小时候(90年代左右),就被告知,一定要离啤酒瓶远一点。当然,现在的技术已经很成熟了,几乎没听到过静置的啤酒瓶发生爆炸。

详细可查看以下代码注释

逻辑思维训练题:计算容积

2、开口的啤酒瓶

开口状态下,内外呀一致,瓶身的受力就小很多,如果不发生碰撞,几乎不可能自发的爆炸。开口状态的啤酒瓶受力如下,由于内外压一致,可以忽略,啤酒瓶仅受重力(瓶身重力和啤酒重力)作用。

空瓶状态的受力分析与上图类似,少了一个液体啤酒的重力。

利用canvas的裁剪功能,进行水泡的绘制

3、啤酒瓶的坠落

下图为密封的啤酒瓶、开口的啤酒瓶,以及空瓶,撞击位置的受力简图。对于密封的啤酒瓶,由于内外压差达到了一个大气压,因此瓶身和啤酒自身的重力可以忽略。这种状态下,撞击的时候,由于撞击点的“集中力”作用,局部应力急剧增大,加上内外压差,啤酒瓶首先从内部萌生裂纹,直至炸开。

对于开口的啤酒瓶,由于内外压差一样,因此不参与计算。撞击过程中,受撞击力和两个重力的作用,同样的高度坠落,开孔的啤酒瓶在撞击点的应力水平要小的多。实际上,在坠落过程中,忽略空气阻力,坠落过程瓶子与啤酒不发生作用。一旦开始撞击,瓶身首先受到地面的作用力(向上),此时瓶身已经受损。随即,瓶内啤酒由于自重再次作用与瓶底(向下),让受损的瓶底变本加厉,从而底部破裂。

对于空瓶,撞击过程中由于没有液体啤酒的二次作用,保险系数得到提高。

澳门新萄京最大平台 3FlaskView

问:为什么有人说满的啤酒瓶比空瓶更容易碎?

  • oval 圆弧形状边界,可以当做是一个矩形边界
  • startAngle 起始角度
  • sweepAngle 旋转角度(注意,这里不是最终的角度,而是要旋转的角度)

如下图所示,就是网络上一段视频,展示了外界冲击条件下,水在瓶子内的运动反而引起了瓶子的碎裂。

mFlaskPath.computeBounds(mFlaskBoundRect, false);mFlaskBoundRect.bottom -= (mFlaskBoundRect.bottom - bottomPos[1]);

总之,这是一个非常有意思的现象,欢迎大家一起讨论。

买了啤酒,瓶有重量。 掉在地上的话,冲劲比较大。空的啤酒瓶比较轻。 所以不容易碎

压力山大,自然比无压力的容易破碎!

装满水,瓶底得到了传递过来的更大的压强、压力

主要是酒瓶装满酒后整体质量增大 ,落地时对地面的冲击力大 ,地面对酒瓶的反作用力随之增大,因此比空瓶更易碎

不是有人说,而事实就是装啤酒的瓶子比空瓶子更容易碎。原因是有酒的瓶子重,甩到地上受到的冲击力更大些。空瓶子轻,受到的冲击力小些,不易碎。不光酒瓶,热水瓶也一样。

满的啤酒瓶比较重,里面气体少,落地冲击力大,易碎,空瓶子轻,里面都是空气,所以不容易虽

热涨冷缩,一碰就会碎

第一,装满了啤酒掉地上撞击力会大一点,其次装满啤酒后瓶子经过晃动会产生许多气体,经过撞击更容易破碎!

private void createBubble() { //若水泡数量达到上限或者水位区域为空的时候,不产生水泡 if (mBubbles.size() >= mBubbleMaxNumber || mWaterRect.isEmpty { return; } //根据时间间隔,判断是否已到达水泡产生的时间 long current = System.currentTimeMillis(); if ((current - mBubbleCreationTime) < mBubbleCreationInterval){ return; } mBubbleCreationTime = current; //以下代码为随机计算水泡坐标   半径  速度 Bubble bubble = obtainBubble(); int radius = mBubbleMinRadius   mOnlyRandom.nextInt(mBubbleMaxRadius - mBubbleMinRadius); bubble.radius = radius; bubble.speed = mBubbleMinSpeed   mOnlyRandom.nextFloat() * mBubbleMaxSpeed; bubble.x = mWaterRect.left   mOnlyRandom.nextInt mWaterRect.width; //random x coordinate bubble.y = mWaterRect.bottom - radius - mStrokeWidth / 2; //the fixed y coordinate mBubbles.add;}

澳门新萄京最大平台 4

这是因为,path.addArc()后,如果圆被截断即addArc的并不是一个完整的圆(我们这里瓶底就是一个弧度圆,瓶底与瓶颈之间的交点使瓶底圆截断),会导致path.computeBounds()计算出来的区域多出来一定的空间,这里贴两张示例图:

问题可以分两类:密封的啤酒瓶,和开口的啤酒瓶。无论哪种情况,其实都涉及到固体的啤酒瓶和液体的啤酒之间的相互作用力。下面,我们一起来探讨一下。

以下为减去该差值的效果:

我还真的在网上看到过类似的试验。试验用的是试管代替的啤酒瓶,发现确实是装了水的试管更加容易碎一些。

我觉得出现这个问题是由于以下一些原因:

首先,装了水的啤酒瓶肯定要比没有装的更加重一些,相同高度掉下来,显然也是装了水的啤酒瓶重力势能更大,掉到地上的时候,这个能量会被瓶子吸收,能量过大的时候自然啤酒瓶就碎了。

其次,水本身是流动的,所以加了水之后的啤酒瓶强度不会被增加【如果加的是很黏的油脂,可能反而啤酒瓶就更不容易碎了】,而且水在啤酒瓶内的运动跟啤酒瓶不是同步的,啤酒瓶掉落到地上的一瞬间水在啤酒瓶内的运动有可能反而会给啤酒瓶造成二次冲击,而带来啤酒瓶的破裂。

//裁剪水位画布canvas.clipRect(mWaterRect);//描绘水泡drawBubbles;

水泡生成和描绘的思路

以下为不减去该差值的效果:

首先,创建一个自定义view,我们知道,在view的大小发生改变后,会回调接口

/*** Add the specified arc to the path as a new contour.** @param oval The bounds of oval defining the shape and size of the arc* @param startAngle Starting angle (in degrees) where the arc begins* @param sweepAngle Sweep angle (in degrees) measured clockwise*/public void addArc(RectF oval, float startAngle, float sweepAngle) { addArc(oval.left, oval.top, oval.right, oval.bottom, startAngle, sweepAngle);}
canvas.drawPath(mFlaskPath, mStrokePaint);

关于瓶底扇形圆弧,这里测试得出取-70° 到 250°,即瓶底圆和屏颈相交的两个点,为比较美观的,因此这里取了这个角度。

但是我们这里为什么还要减去一个差值呢?

//裁剪整个瓶子的画布canvas.clipPath(mFlaskPath);//画水位canvas.drawRect(mWaterRect, mWaterPaint);

我们知道,在进行频繁的创建水泡的时候,如果每次都创建新对象的话, 可能会增加不必要的内存使用,而且很容易引起频繁的gc,甚至是内存抖动。

澳门新萄京最大平台 5FlaskView

  • 根据水位区域,在水位底部,随机产生水泡
  • 产生水泡后,将该水泡记录下来,并且根据一个speed进行位移
  • 当水泡离开水位区域,将其在记录中移除

根据以上代码,我们已经计算获得了整个瓶子的path,那么我们如何去计算和画水位呢?

利用canvas的裁剪功能,进行水位的绘制

//获取view的中心点float centerX = w / 2;float centerY = h / 2;//瓶底圆半径为view的宽度的1/5float flaskBottomCircleRadius = w / 5f;//瓶颈高度为半径的2/3float neckHeight = flaskBottomCircleRadius * 2f / 3;//瓶盖高度为瓶颈高度的3/10float headHeight = 0.3f * neckHeight;//重置pathmFlaskPath.reset();//计算瓶子在view中的中心点y坐标float flaskCenterY = centerY   (neckHeight   headHeight) / 2;//**********************************************************瓶底部分******************************************************//瓶底和瓶颈的左边和右边的相交的两个点的坐标float[] leftEndPos = new float[2];float[] rightEndPos = new float[2];//瓶底圆底部点的坐标float[] bottomPos = new float[2];//计算三个点的坐标leftEndPos[0] =  (flaskBottomCircleRadius * Math.cos(250 * Math.PI / 180f)   centerX);leftEndPos[1] =  (flaskBottomCircleRadius * Math.sin(250 * Math.PI / 180f)   flaskCenterY);rightEndPos[0] =  (flaskBottomCircleRadius * Math.cos(-70 * Math.PI / 180f)   centerX);rightEndPos[1] =  (flaskBottomCircleRadius * Math.sin(-70 * Math.PI / 180f)   flaskCenterY);bottomPos[0] =  (flaskBottomCircleRadius * Math.cos(90 * Math.PI / 180f)   centerX);bottomPos[1] =  (flaskBottomCircleRadius * Math.sin(90 * Math.PI / 180f)   flaskCenterY);//计算出圆弧所在的区域RectF flaskArcRect = new RectF(centerX - flaskBottomCircleRadius, flaskCenterY - flaskBottomCircleRadius,centerX   flaskBottomCircleRadius, flaskCenterY   flaskBottomCircleRadius);//添加底部圆弧轨迹mFlaskPath.addArc(flaskArcRect, -70, 320);//***********************************************************************************************************************//首先将path移至左边相交点mFlaskPath.moveTo(leftEndPos[0], leftEndPos[1]);//添加左边的瓶颈线mFlaskPath.lineTo(leftEndPos[0], leftEndPos[1] - neckHeight);//通过贝塞尔曲线添加左边瓶盖轨迹mFlaskPath.quadTo(leftEndPos[0] - flaskBottomCircleRadius / 8, leftEndPos[1] - neckHeight - headHeight / 2, leftEndPos[0], leftEndPos[1] - neckHeight - headHeight);//移动至右边瓶盖定点mFlaskPath.lineTo(rightEndPos[0],rightEndPos[1] - neckHeight - headHeight);//通过贝塞尔曲线添加右边瓶盖轨迹mFlaskPath.quadTo(rightEndPos[0]   flaskBottomCircleRadius / 8, rightEndPos[1] - neckHeight - headHeight / 2, rightEndPos[0], rightEndPos[1] - neckHeight);//添加右边的瓶颈线mFlaskPath.lineTo(rightEndPos[0], rightEndPos[1]);

View的onDraw中描绘瓶子

关于path.addArc,首先这里的参数代表

我们可以通过path.computeBounds()计算出瓶子所占的整个区域

//首先判断栈中是否存在回收的对象,若存在,则直接复用,若不存在,则创建一个新的对象private Bubble obtainBubble(){ if (mRecycler.isEmpty{ return new Bubble(); } return mRecycler.pop();}//回收到一个栈里面,若这个栈数量超过最大可显示数量,则popprivate void recycle(Bubble bubble){ if (bubble == null){ return; } if (mRecycler.size() >= mBubbleMaxNumber){ mRecycler.pop(); } mRecycler.push;}

在Android中,默认的0°为数学上圆的90°,这里不明白的请百度

因此,我们可以在该方法里面,取得view的宽高后进行瓶子的初始化,大概的思路是:

计算出瓶子的区域后,我们就可以获取水位的区域了

/*** This is called during layout when the size of this view has changed. If* you were just added to the view hierarchy, you're called with the old* values of 0.** @param w Current width of this view.* @param h Current height of this view.* @param oldw Old width of this view.* @param oldh Old height of this view.*/protected void onSizeChanged(int w, int h, int oldw, int oldh) {}

因此这里我增加了一个回收功能

mWaterRect.set(mFlaskBoundRect.left, mFlaskBoundRect.bottom - mFlaskBoundRect.height() * mWaterHeightPercent,mFlaskBoundRect.right, mFlaskBoundRect.bottom);

Github

  • 计算瓶底圆半径大小
  • 计算瓶颈高度大小
  • 计算瓶盖高度大小
  • path添加瓶底圆轨迹
  • path添加瓶颈轨迹
  • path添加瓶盖轨迹
  • 计算瓶子path所占的区域
  • 对整个瓶子的path进行canvas裁剪

编辑:古典文学 本文来源:为什么有人说满的啤酒瓶比空瓶更容易碎?【澳

关键词: 侦探 学网 好文 容积 空瓶